python包NetworkX學習——最短路徑dijkstra_path和dijkstra_path_length
阿新 • • 發佈:2019-01-02
函式呼叫
dijkstra_path(G, source, target, weight='weight')#求最短路徑
dijkstra_path_length(G, source, target, weight='weight')#求最短距離
引數表:
引數 | 含義 |
---|---|
G | 一個網路圖 |
source(node) | 路徑源點 |
target(node) | 路徑終點 |
weight(string, optional(default=’weight’)) | 對應邊的權重 |
————————————————————————————————————————————————————————————————————————
例子:
import networkx as nx
import pylab
import numpy as np
#自定義網路
row=np.array([0,0,0,1,2,3,6])
col=np.array([1,2,3,4,5,6,7])
value=np.array([1,2,1,8,1,3,5])
print('生成一個空的有向圖')
G=nx.DiGraph()
print('為這個網路新增節點...')
for i in range(0,np.size(col)+1):
G.add_node(i)
print('在網路中新增帶權中的邊...')
for i in range(np.size(row)):
G.add_weighted_edges_from([(row[i],col[i],value[i])])
print('給網路設定佈局...')
pos=nx.shell_layout(G)
print('畫出網路影象:')
nx.draw(G,pos,with_labels=True, node_color='white', edge_color='red', node_size=400, alpha=0.5 )
pylab.title('Self_Define Net',fontsize=15)
pylab.show()
'''
Shortest Path with dijkstra_path
'''
print('dijkstra方法尋找最短路徑:')
path=nx.dijkstra_path(G, source=0, target=7)
print('節點0到7的路徑:', path)
print('dijkstra方法尋找最短距離:')
distance=nx.dijkstra_path_length(G, source=0, target=7)
print('節點0到7的距離為:', distance)
——————————————————————————————————————————————
輸出結果
生成一個空的有向圖
為這個網路新增節點...
在網路中新增帶權中的邊...
給網路設定佈局...
畫出網路影象:

dijkstra方法尋找最短路徑:
節點0到7的路徑: [0, 3, 6, 7]
dijkstra方法尋找最短距離:
節點0到7的距離為: 9