任務:使用Python接口作爲邊界/頂點列表,查找具有負權重的DAG(有向無環圖)的最短路徑單源/單目標設置。使用帶負向權重的DAG上的python-IGraph查找最短路徑
試過:我在文檔中找到的最接近的匹配是get_shortest_paths
。但是,如果嘗試函數返回: igraph._igraph.InternalError: Error at structural_properties.c:5220: Weight vector must be non-negative, Invalid value
似乎內部函數試圖應用Dijkstra算法並失敗。同時,根據文檔,其他最短路徑函數(shortest_paths
,shortest_paths_dijkstra
)能夠使算法適應圖的屬性。
問題:
- 有沒有在這種情況下使用替代的功能?
- 或如何使
get_shortest_paths
選擇了一個正確的內部算法? - 或者可以在算法中明確指定(as in the R interface)
相關問題:
- 是IGRAPH能夠檢測圖爲DAG和使用更快的最短路徑算法的拓撲排序圖形?
- 自定義的python代碼是否會比通用內部igraph算法(大概用C++編寫)慢? (| E |是成千上萬,| V |是以千計)
謝謝。
PS。 Python 2.7,IGraph 0.6.5
謝謝。實際上,已經從NetworkX切換到IGraph,因爲後者的內存效率提高了大約1.5倍(需要在內存中保留數以萬計的圖形,每個邊上具有豐富的屬性)。在NetworkX中,沒有DAG優化的最短路徑例程。所以將再次堅持爲DAG的最短路徑定製python代碼。 – artem