圖的結構 Python實現


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM