タスク: igraph ライブラリへの Python インターフェイスを使用して、負の重みを持つ DAG (有向非巡回グラフ) の最短パスを、単一ソース/単一ターゲット セットアップのエッジ/頂点のリストとして見つけます。
試した:ドキュメントで見つけた最も近い一致はget_shortest_paths
. ただし、関数を試してみると、次のように返さ
れます。
igraph._igraph.InternalError: Error at structural_properties.c:5220: Weight vector must be non-negative, Invalid value
内部的には、関数がダイクストラのアルゴリズムを適用しようとして失敗したようです。同時に、ドキュメントによると、他の最短経路関数 ( shortest_paths
、shortest_paths_dijkstra
) はアルゴリズムをグラフのプロパティに適応させることができます。
質問:
- この場合に使用する代替機能はありますか?
- または
get_shortest_paths
、正しい内部アルゴリズムを選択する方法は? - または、アルゴリズムを明示的に指定することもできます (R インターフェースのように)
関連する質問:
- igraph は、グラフが DAG であることを検出し、トポロジー的に並べ替えられたグラフでより高速な最短経路アルゴリズムを使用できますか?
- このためのカスタム python コードは、汎用の内部 igraph のアルゴリズム (おそらく C++ で記述) の 1 つよりも必然的に遅くなりますか? (|E| は万単位、|V| は千単位)
ありがとう。
PS。Python 2.7、IGraph 0.6.5