本文簡要介紹 python 語言中 scipy.sparse.csgraph.dijkstra
的用法。
用法:
scipy.sparse.csgraph.dijkstra(csgraph, directed=True, indices=None, return_predecessors=False, unweighted=False, limit=np.inf, min_only=False)#
使用斐波那契堆的 Dijkstra 算法
- csgraph: 數組、矩陣或稀疏矩陣,二維
表示輸入圖的 N x N 非負距離數組。
- directed: 布爾型,可選
如果為 True(默認),則查找有向圖上的最短路徑:僅沿著路徑 csgraph[i, j] 從點 i 移動到點 j,以及沿著路徑 csgraph[j, i] 從點 j 移動到 i。如果為 False,則找到無向圖上的最短路徑:算法可以沿著 csgraph[i, j] 或 csgraph[j, i] 從點 i 到 j 或 j 到 i。
- indices: 數組 或 int,可選
如果指定,則僅計算給定索引處的點的路徑。
- return_predecessors: 布爾型,可選
如果為 True,則返回大小為 (N, N) 的前驅矩陣。
- unweighted: 布爾型,可選
如果為真,則找到未加權的距離。也就是說,不是找到每個點之間的路徑以使權重之和最小化,而是找到使邊數最小化的路徑。
- limit: 浮點數,可選
要計算的最大距離必須 >= 0。使用較小的限製將中止距離 > 限製的對之間的計算,從而減少計算時間。對於此類對,距離將等於np.inf(即未連接)。
- min_only: 布爾型,可選
如果為 False(默認),對於圖中的每個節點,從索引中的每個節點找到最短路徑。如果為 True,則對於圖中的每個節點,從索引中的任何節點找到最短路徑(這可能會更快)。
- dist_matrix: ndarray,形狀([n_indices,]n_nodes,)
圖節點之間的距離矩陣。如果min_only=False,dist_matrix 具有形狀 (n_indices, n_nodes) 並且 dist_matrix[i, j] 給出了從點 i 到點 j 沿圖的最短距離。如果min_only=True,dist_matrix 具有形狀 (n_nodes,) 並包含給定節點從索引中的任何節點到該節點的最短路徑。
- predecessors: ndarray,形狀([n_indices,]n_nodes,)
如果min_only=False,則其形狀為(n_indices,n_nodes),否則其形狀為(n_nodes,)。僅當 return_predecessors == True 時才返回。前驅矩陣,可用於重建最短路徑。前驅矩陣的第 i 行包含從點 i 開始的最短路徑信息:每個條目前驅[i, j] 給出從點 i 到點 j 的路徑中前一個節點的索引。如果點 i 和 j 之間不存在路徑,則前驅[i, j] = -9999
- sources: ndarray,形狀(n_nodes,)
僅當 min_only=True 和 return_predecessors=True 時返回。包含到每個目標的最短路徑的源的索引。如果限製範圍內不存在路徑,則該路徑將包含 -9999。傳遞的索引處的值將等於該索引(即到達節點 i 的最快方法是從節點 i 開始)。
參數 ::
返回 ::
注意:
正如當前實現的那樣,Dijkstra 的算法不適用於具有 direction-dependent 距離的圖,當有向 == False 時。即,如果 csgraph[i,j] 和 csgraph[j,i] 不相等且均非零,則設置directed=False 將不會產生正確的結果。
此外,此例程不適用於具有負距離的圖形。負距離可能導致無限循環,必須由專門的算法處理,例如 Bellman-Ford 的算法或 Johnson 的算法。
如果可能存在多個有效解決方案,則輸出可能會因 SciPy 和 Python 版本而異。
例子:
>>> from scipy.sparse import csr_matrix >>> from scipy.sparse.csgraph import dijkstra
>>> graph = [ ... [0, 1, 2, 0], ... [0, 0, 0, 1], ... [0, 0, 0, 3], ... [0, 0, 0, 0] ... ] >>> graph = csr_matrix(graph) >>> print(graph) (0, 1) 1 (0, 2) 2 (1, 3) 1 (2, 3) 3
>>> dist_matrix, predecessors = dijkstra(csgraph=graph, directed=False, indices=0, return_predecessors=True) >>> dist_matrix array([0., 1., 2., 2.]) >>> predecessors array([-9999, 0, 0, 1], dtype=int32)
相關用法
- Python SciPy csgraph.depth_first_order用法及代碼示例
- Python SciPy csgraph.depth_first_tree用法及代碼示例
- Python SciPy csgraph.csgraph_to_dense用法及代碼示例
- Python SciPy csgraph.min_weight_full_bipartite_matching用法及代碼示例
- Python SciPy csgraph.minimum_spanning_tree用法及代碼示例
- Python SciPy csgraph.breadth_first_order用法及代碼示例
- Python SciPy csgraph.connected_components用法及代碼示例
- Python SciPy csgraph.breadth_first_tree用法及代碼示例
- Python SciPy csgraph.csgraph_from_dense用法及代碼示例
- Python SciPy csgraph.floyd_warshall用法及代碼示例
- Python SciPy csgraph.bellman_ford用法及代碼示例
- Python SciPy csgraph.csgraph_to_masked用法及代碼示例
- Python SciPy csgraph.maximum_flow用法及代碼示例
- Python SciPy csgraph.csgraph_masked_from_dense用法及代碼示例
- Python SciPy csgraph.shortest_path用法及代碼示例
- Python SciPy csgraph.reconstruct_path用法及代碼示例
- Python SciPy csgraph.johnson用法及代碼示例
- Python SciPy csgraph.maximum_bipartite_matching用法及代碼示例
- Python SciPy csgraph.csgraph_from_masked用法及代碼示例
- Python SciPy csgraph.construct_dist_matrix用法及代碼示例
- Python SciPy csgraph.reverse_cuthill_mckee用法及代碼示例
- Python SciPy csgraph.laplacian用法及代碼示例
- Python SciPy csgraph.structural_rank用法及代碼示例
- Python SciPy csc_array.diagonal用法及代碼示例
- Python SciPy csc_matrix.nonzero用法及代碼示例
注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.sparse.csgraph.dijkstra。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。