数据结构-图
1. 定义:
图是一种由节点(或称为顶点)和连接这些节点的边组成的数据结构。图可以用来表示任何二元关系,比如路线、网络、状态转换等。
在 Python 中,可以使用邻接表或邻接矩阵来表示图
class Graph:
def __init__(self):
self.graph = {}
2. 类型:
图分为有向图和无向图。在无向图中,边没有方向;在有向图中,边有明确的方向。此外,图可以是加权的(边有权值)或非加权的。
3. 术语:
关键术语包括邻接(两个节点由一条边直接连接)、路径(节点序列,其中每对相邻节点都由边连接)、环(路径的起点和终点是同一节点)、连通(如果图中任意两节点间都存在路径,则称该图为连通图)。
4. 表示方法:
图可以通过多种方式表示,包括邻接矩阵(一个二维数组,表示节点间的连接情况)和邻接表(列表或链表,表示每个节点的邻接节点)。
- 邻接矩阵表示图:
class Graph:
def __init__(self, num_vertices):
self.num_vertices = num_vertices
self.graph = [[0] * num_vertices for _ in range(num_vertices)]
def add_edge(self, u, v):
self.graph[u][v] = 1
def print_graph(self):
for row in self.graph:
print(" ".join(map(str, row)))
# 示例用法
g = Graph(4)
g.add_edge(0, 1)
g.add_edge(0, 2)
g.add_edge(1, 2)
g.add_edge(2, 0)
g.add_edge(2, 3)
g.add_edge(3, 3)
g.print_graph()
- 邻接表表示图:
class Graph:
def __init__(self):
self.graph = {}
def add_edge(self, u, v):
if u not in self.graph:
self.graph[u] = []
self.graph[u].append(v)
def print_graph(self):
for node in self.graph:
print(node, "->", " -> ".join(map(str, self.graph[node])))
# 示例用法
g = Graph()
g.add_edge(0, 1)
g.add_edge(0, 2)
g.add_edge(1, 2)
g.add_edge(2, 0)
g.add_edge(2, 3)
g.add_edge(3, 3)
g.print_graph()
5. 应用:
图广泛应用于计算机科学和相关领域,例如在网络分析、社交网络、路径寻找(如GPS导航)、资源网络分析等领域。
标签:graph,self,add,edge,数据结构,节点,def From: https://www.cnblogs.com/zx-demo/p/18133072