1. 程式人生 > >python包NetworkX學習——最短路徑dijkstra_path和dijkstra_path_length

python包NetworkX學習——最短路徑dijkstra_path和dijkstra_path_length

函式呼叫

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方法尋找最短路徑:
節點07的路徑: [0, 3, 6, 7]
dijkstra方法尋找最短距離:
節點07的距離為: 9

這裡寫圖片描述

參考

更多詳細介紹可參考網站12