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

前言:html

數學中,「圖論」研究的是定點和邊組成的圖形。node

計算機中,「網絡拓撲」是數學概念中「圖」的一個子集。所以,計算機網絡拓撲圖也能夠由節點(即頂點)和鏈路(即邊)來進行定義和繪製。python

延伸:網絡

無向圖數據結構

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

 有向圖計算機網絡

兩個節點之間只有一條線相鏈接,且有方向。方向能夠單向,也能夠雙向。code

 多重圖htm

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

 

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

平時咱們能夠用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

相關文章
相關標籤/搜索