1.每个节点类型设置
1 # 图的节点结构 2 class Node: 3 def __init__(self, value): 4 self.value = value # 节点值 5 self.come = 0 # 节点入度 6 self.out = 0 # 节点出度 7 self.nexts = [] # 节点的邻居节点 8 self.edges = [] # 在节点为from的情况下,边的集合
2.每条边类型设置
1 # 图的边结构 2 class Edge: 3 def __init__(self, weight, fro, to): 4 self.weight = weight # 边的权重 5 self.fro = fro # 边的from节点 6 self.to = to # 边的to节点
3.图的结构
1 # 图结构 2 class Graph: 3 def __init__(self): 4 self.nodes = {} # 图的所有节点集合 字典形式:{节点编号:节点} 5 self.edges = [] # 图的边集合
4.图的实现
1 # 生成图结构 2 # matrix = [ 3 # [1,2,3], ==> 里面分别代表权重, from节点, to节点 4 # [...] 5 # ] 6 from Graph import Graph 7 from Node import Node 8 from Edge import Edge 9 10 11 def createGraph(matrix): 12 graph = Graph() 13 for edge in matrix: 14 weight = edge[0] 15 fro = edge[1] 16 to = edge[2] 17 if fro not in graph.nodes: 18 graph.nodes[fro] = Node(fro) 19 if to not in graph.nodes: 20 graph.nodes[to] = Node(to) 21 fromNode = graph.nodes[fro] 22 toNode = graph.nodes[to] 23 newEdge = Edge(weight, fromNode, toNode) 24 fromNode.nexts.append(toNode) 25 fromNode.out += 1 26 toNode.come += 1 27 fromNode.edges.append(newEdge) 28 graph.edges.append(newEdge) 29 return graph