當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python NetworkX shortest_path用法及代碼示例


本文簡要介紹 networkx.algorithms.shortest_paths.generic.shortest_path 的用法。

用法:

shortest_path(G, source=None, target=None, weight=None, method='dijkstra')

計算圖中的最短路徑。

參數

GNetworkX 圖
source節點,可選

路徑的起始節點。如果未指定,則為每個可能的起始節點計算最短路徑。

target節點,可選

路徑的結束節點。如果未指定,則計算所有可能節點的最短路徑。

weight無,字符串或函數,可選(默認 = 無)

如果為 None,則每條邊的權重/距離/成本為 1。如果是字符串,則使用此邊屬性作為邊權重。任何不存在的邊屬性默認為 1。如果這是一個函數,則邊的權重是函數返回的值。該函數必須準確地接受三個位置參數:一條邊的兩個端點和該邊的邊屬性字典。該函數必須返回一個數字。

method字符串,可選(默認 = ‘dijkstra’)

用於計算路徑的算法。支持的選項:‘dijkstra’、‘bellman-ford’。其他輸入會產生 ValueError。如果weight 為 None,則使用未加權的圖形方法,並忽略此建議。

返回

路徑:列表或字典

所有返回的路徑都包括路徑中的源和目標。

如果同時指定了源和目標,則返回從源到目標的最短路徑中的單個節點列表。

如果僅指定了源,則返回一個由目標鍵控的字典,其中包含從源到其中一個目標的最短路徑中的節點列表。

如果僅指定了目標,則返回由源鍵入的字典,其中包含從其中一個源到目標的最短路徑中的節點列表。

如果既沒有指定源也沒有指定目標,則返回帶有 path[source][target]=[list of nodes in path] 的字典字典。

拋出

NodeNotFound

如果 source 不在 G 中。

ValueError

如果 method 不在支持的選項中。

注意

源和目標之間可能存在不止一條最短路徑。這僅返回其中之一。

例子

>>> G = nx.path_graph(5)
>>> print(nx.shortest_path(G, source=0, target=4))
[0, 1, 2, 3, 4]
>>> p = nx.shortest_path(G, source=0)  # target not specified
>>> p[4]
[0, 1, 2, 3, 4]
>>> p = nx.shortest_path(G, target=4)  # source not specified
>>> p[0]
[0, 1, 2, 3, 4]
>>> p = nx.shortest_path(G)  # source, target not specified
>>> p[0][4]
[0, 1, 2, 3, 4]

相關用法


注:本文由純淨天空篩選整理自networkx.org大神的英文原創作品 networkx.algorithms.shortest_paths.generic.shortest_path。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。