本文簡要介紹
networkx.algorithms.simple_paths.shortest_simple_paths
的用法。用法:
shortest_simple_paths(G, source, target, weight=None)
- 生成圖 G 中從源到目標的所有簡單路徑,
從最短的開始。
簡單路徑是沒有重複節點的路徑。
如果要使用加權最短路徑搜索,則不允許使用負權重。
- G:NetworkX 圖
- source:節點
路徑的起始節點
- target:節點
路徑的結束節點
- weight:字符串或函數
如果是字符串,則為要用作權重的邊屬性的名稱。
如果是函數,邊的權重就是函數返回的值。該函數必須準確地接受三個位置參數:一條邊的兩個端點和該邊的邊屬性字典。該函數必須返回一個數字。
如果 None 所有邊都被認為具有單位權重。默認值無。
- path_generator:生成器
生成簡單路徑列表的生成器,按從最短到最長的順序排列。
- NetworkXNoPath
如果源和目標之間不存在路徑。
- NetworkXError
如果源或目標節點不在輸入圖中。
- NetworkXNotImplemented
如果輸入圖是 Multi[Di]Graph。
參數:
返回:
拋出:
注意:
該過程基於 Jin Y. Yen [1] 的算法。查找第一個 路徑需要 操作。
參考:
- 1
Jin Y. Yen, “Finding the K Shortest Loopless Paths in a Network”, Management Science, Vol. 17, No. 11, Theory Series (Jul., 1971), pp. 712-716.
例子:
>>> G = nx.cycle_graph(7) >>> paths = list(nx.shortest_simple_paths(G, 0, 3)) >>> print(paths) [[0, 1, 2, 3], [0, 6, 5, 4, 3]]
您可以使用此函數有效地計算兩個節點之間的 k 個最短/最佳路徑。
>>> from itertools import islice >>> def k_shortest_paths(G, source, target, k, weight=None): ... return list( ... islice(nx.shortest_simple_paths(G, source, target, weight=weight), k) ... ) >>> for path in k_shortest_paths(G, 0, 3, 2): ... print(path) [0, 1, 2, 3] [0, 6, 5, 4, 3]
相關用法
- Python NetworkX shortest_path用法及代碼示例
- Python NetworkX shortest_augmenting_path用法及代碼示例
- Python NetworkX shortest_path_length用法及代碼示例
- Python NetworkX shell_layout用法及代碼示例
- Python NetworkX single_source_dijkstra_path_length用法及代碼示例
- Python NetworkX single_source_bellman_ford用法及代碼示例
- Python NetworkX subgraph_view用法及代碼示例
- Python NetworkX square_clustering用法及代碼示例
- Python NetworkX soft_random_geometric_graph用法及代碼示例
- Python NetworkX sets用法及代碼示例
- Python NetworkX simrank_similarity用法及代碼示例
- Python NetworkX single_source_bellman_ford_path用法及代碼示例
- Python NetworkX sudoku_graph用法及代碼示例
- Python NetworkX single_source_bellman_ford_path_length用法及代碼示例
- Python NetworkX single_source_shortest_path_length用法及代碼示例
- Python NetworkX snap_aggregation用法及代碼示例
- Python NetworkX set_edge_attributes用法及代碼示例
- Python NetworkX stochastic_block_model用法及代碼示例
- Python NetworkX symmetric_difference用法及代碼示例
- Python NetworkX selfloop_edges用法及代碼示例
- Python NetworkX second_order_centrality用法及代碼示例
- Python NetworkX simulated_annealing_tsp用法及代碼示例
- Python NetworkX spring_layout用法及代碼示例
- Python NetworkX simple_cycles用法及代碼示例
- Python NetworkX single_source_dijkstra用法及代碼示例
注:本文由純淨天空篩選整理自networkx.org大神的英文原創作品 networkx.algorithms.simple_paths.shortest_simple_paths。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。