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