Python繪制拓撲圖(無向圖)、有向圖、多重圖。最短路徑計算


前言:

數學中,“圖論”研究的是定點和邊組成的圖形。

計算機中,“網絡拓撲”是數學概念中“圖”的一個子集。因此,計算機網絡拓撲圖也可以由節點(即頂點)和鏈路(即邊)來進行定義和繪制。

延伸:

無向圖

兩個節點之間只有一條線相連接,且沒有方向。

 有向圖

兩個節點之間只有一條線相連接,且有方向。方向可以單向,也可以雙向。

 多重圖

兩個節點之間只有多條線相連接。

 

網絡拓撲是網絡工程師日常工作的基礎。網絡規划階段、網絡建設階段、維護階段都離不開網絡拓撲圖。

平時我們可以用Microsoft Visio 和Office PowerPoint 繪制出漂亮的網絡拓撲,但不方便轉為格式化的數據關系。

也可以用DOT語言(拓撲數據結構的描述性語言)繪制。

 

這里我重點講解python的networkx工具來繪制網絡拓撲圖。

 

python代碼案例:

import networkx as nx
import matplotlib.pyplot as plt

nodes=[
    'A',
    'B',
    'C',
    'D',
    'E',
    'F',
    'G'
]

G=nx.Graph()
# G=nx.DiGraph()
# G=nx.MultiGraph()

for node in nodes:
    G.add_node(node)

edges=[
    ('A','B'),
    ('A','C'),
    ('B','C'),
    ('D','B'),
    ('B','D'),
    ('D','C'),
    ('E','B'),
    ('E','A'),
    ('F','B'),
    ('F','A'),
    ('G','C'),
    ('G','A')
]

r=G.add_edges_from(edges)

# 計算最短路徑。
shortest_way=nx.shortest_path(G,"F","D")
print(shortest_way)

nx.draw(G, with_labels=True,node_color='y',)
plt.show()

 輸出:

F到D的最短路徑:

['F', 'B', 'D']

 

節點關系繪圖參考:

https://www.cnblogs.com/minglex/p/9205160.html

 


免責聲明!

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



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