前言: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']
節點關係繪圖參考: