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


Python NetworkX dijkstra_predecessor_and_distance用法及代碼示例


本文簡要介紹 networkx.algorithms.shortest_paths.weighted.dijkstra_predecessor_and_distance 的用法。

用法:

dijkstra_predecessor_and_distance(G, source, cutoff=None, weight='weight')

計算加權最短路徑長度和前任。

使用 Dijkstra 方法獲取最短加權路徑並返回每個節點的前驅字典以及每個節點與 source 的距離。

參數

GNetworkX 圖
source節點標簽

路徑的起始節點

cutoff整數或浮點數,可選

停止搜索的長度(邊權重的總和)。如果提供了截止,則僅返回總權重 <= 截止的路徑。

weight字符串或函數

如果這是一個字符串,則將通過帶有此鍵的邊屬性訪問邊權重(即,連接 uv 的邊的權重將為 G.edges[u, v][weight] )。如果不存在這樣的邊屬性,則假設邊的權重為 1。

如果這是一個函數,則邊的權重是函數返回的值。該函數必須準確地接受三個位置參數:一條邊的兩個端點和該邊的邊屬性字典。該函數必須返回一個數字。

返回

pred, distance字典

返回兩個字典,表示節點的前任列表和到每個節點的距離。警告:如果指定了目標,則字典不完整,因為它們僅包含目標路徑上節點的信息。

拋出

NodeNotFound

如果 source 不在 G 中。

注意

邊權重屬性必須是數字。距離計算為遍曆的加權邊的總和。

隻有當有多個到關鍵節點的最短路徑時,前輩列表才包含多個元素。

例子

>>> G = nx.path_graph(5, create_using=nx.DiGraph())
>>> pred, dist = nx.dijkstra_predecessor_and_distance(G, 0)
>>> sorted(pred.items())
[(0, []), (1, [0]), (2, [1]), (3, [2]), (4, [3])]
>>> sorted(dist.items())
[(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)]
>>> pred, dist = nx.dijkstra_predecessor_and_distance(G, 0, 1)
>>> sorted(pred.items())
[(0, []), (1, [0])]
>>> sorted(dist.items())
[(0, 0), (1, 1)]

相關用法


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