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


Python NetworkX all_shortest_paths用法及代碼示例


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

用法:

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

計算圖中所有最短的簡單路徑。

參數

GNetworkX 圖
source節點

路徑的起始節點。

target節點

路徑的結束節點。

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

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

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

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

返回

paths列表生成器

源和目標之間所有路徑的生成器。

拋出

ValueError

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

NetworkXNoPath

如果無法從 source 到達 target

注意

源和目標之間可能有許多最短路徑。如果 G 包含 zero-weight 個循環,此函數將不會產生所有最短路徑,因為這樣做會產生無限多長度無限的路徑 - 相反,我們隻產生最短的簡單路徑。

例子

>>> G = nx.Graph()
>>> nx.add_path(G, [0, 1, 2])
>>> nx.add_path(G, [0, 10, 2])
>>> print([p for p in nx.all_shortest_paths(G, source=0, target=2)])
[[0, 1, 2], [0, 10, 2]]

相關用法


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