networkx.algorithms.shortest_paths.weighted.bellman_ford_predecessor_and_distance
的用法。用法:
bellman_ford_predecessor_and_distance(G, source, target=None, weight='weight', heuristic=False)
計算加權圖中最短路徑的最短路徑長度和前導。
該算法的運行時間為 ,其中 是節點數, 是邊數。它比 Dijkstra 慢,但可以處理負邊權重。
如果檢測到負循環,您可以使用
find_negative_cycle()
返回循環並檢查它。當存在負循環時,不會定義最短路徑,因為一旦達到,路徑可以永遠循環以建立任意低的權重。- G:NetworkX 圖
該算法適用於所有類型的圖,包括有向圖和多重圖。
- source: node label:
路徑的起始節點
- target:節點標簽,可選
路徑的結束節點
- weight:字符串或函數
如果這是一個字符串,則將通過帶有此鍵的邊屬性訪問邊權重(即,連接
u
到v
的邊的權重將為G.edges[u, v][weight]
)。如果不存在這樣的邊屬性,則假設邊的權重為 1。如果這是一個函數,則邊的權重是函數返回的值。該函數必須準確地接受三個位置參數:一條邊的兩個端點和該邊的邊屬性字典。該函數必須返回一個數字。
- heuristic:bool
確定是否使用啟發式方法以希望可以忽略不計的成本及早檢測負循環。
- pred, dist:字典
將節點鍵控的兩個字典分別返回到路徑中的前任和到源的距離。
- NodeNotFound
如果
source
不在G
中。- NetworkXUnbounded
如果 (di) 圖包含負 (di) 循環,則算法會引發異常以指示存在負 (di) 循環。注意:無向圖中的任何負權邊都是負循環。
參數:
返回:
拋出:
注意:
邊權重屬性必須是數字。距離計算為遍曆的加權邊的總和。
返回的字典僅具有可從源訪問的節點的鍵。
在(di)圖不連通的情況下,如果不包含源的組件包含負(di)循環,則不會被檢測到。
在 NetworkX v2.1 及更早版本中,源節點具有前任
[None]
。在 NetworkX v2.2 中,這更改為具有前任[]
的源節點例子:
>>> G = nx.path_graph(5, create_using=nx.DiGraph()) >>> pred, dist = nx.bellman_ford_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.bellman_ford_predecessor_and_distance(G, 0, 1) >>> 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)]
>>> G = nx.cycle_graph(5, create_using=nx.DiGraph()) >>> G[1][2]["weight"] = -7 >>> nx.bellman_ford_predecessor_and_distance(G, 0) Traceback (most recent call last): ... networkx.exception.NetworkXUnbounded: Negative cycle detected.
相關用法
- Python NetworkX bellman_ford_path用法及代碼示例
- Python NetworkX bellman_ford_path_length用法及代碼示例
- Python NetworkX bethe_hessian_matrix用法及代碼示例
- Python NetworkX binomial_graph用法及代碼示例
- Python NetworkX boykov_kolmogorov用法及代碼示例
- Python NetworkX bfs_edges用法及代碼示例
- Python NetworkX biconnected_component_edges用法及代碼示例
- Python NetworkX bfs_beam_edges用法及代碼示例
- Python NetworkX biconnected_components用法及代碼示例
- Python NetworkX bfs_predecessors用法及代碼示例
- Python NetworkX bfs_successors用法及代碼示例
- Python NetworkX bridges用法及代碼示例
- Python NetworkX bfs_tree用法及代碼示例
- Python NetworkX bridge_components用法及代碼示例
- Python NetworkX bipartite_layout用法及代碼示例
- Python NetworkX bidirectional_dijkstra用法及代碼示例
- Python NetworkX negative_edge_cycle用法及代碼示例
- Python NetworkX voronoi_cells用法及代碼示例
- Python NetworkX numerical_edge_match用法及代碼示例
- Python NetworkX inverse_line_graph用法及代碼示例
- Python NetworkX LFR_benchmark_graph用法及代碼示例
- Python NetworkX write_graph6用法及代碼示例
- Python NetworkX DiGraph.__contains__用法及代碼示例
- Python NetworkX average_degree_connectivity用法及代碼示例
- Python NetworkX eulerian_circuit用法及代碼示例
注:本文由純淨天空篩選整理自networkx.org大神的英文原創作品 networkx.algorithms.shortest_paths.weighted.bellman_ford_predecessor_and_distance。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。