グラフ内のすべてのペア間の最短パス(は10未満)を生成したいと思います。グラフは(実際には地下鉄の地図です):
- 正に重み付け
- 無向
- 疎
- 約100ノード
私の現在の計画は、各ペアに最短パスルーティングを適用することです。私は現在、より効率的な代替手段を探しています(おそらく動的プログラミングを使用)。
グラフ内のすべてのペア間の最短パス(は10未満)を生成したいと思います。グラフは(実際には地下鉄の地図です):
私の現在の計画は、各ペアに最短パスルーティングを適用することです。私は現在、より効率的な代替手段を探しています(おそらく動的プログラミングを使用)。
回答:
まず、最短経路を計算する際の重要な違いは、経路を単純にする必要があるかどうかです。ノードに繰り返しノードが含まれていない場合、パスはシンプルと呼ばれます。たとえば、ループのあるパスは単純ではありません。リンクしたウィキペディアのページでは、記事は必ずしも単純なパスではないことに注意してください。単純なパスの場合は、必ずしも単純なパスではない場合よりも難しいようです。
これはかなり若い研究分野のようです。AgarwalとRamachandranによる最近の論文は、ArXiv [1]にあります。前の作業セクションでは、問題の履歴についての洞察も得られます。
ここでは、実際に、エプシュタインアルゴリズムを繰り返し適用することが最良の選択です[2]。問題のシングルソースバージョンのアルゴリズムを繰り返し適用することが最速のアプローチであるという一般的な観察は、1977年にEL Lawlerによってすでに行われています[3]。Eppsteinは、この副問題に対してこれまでに最速のアルゴリズムを提供します。
[1] Agarwalさん、U.およびラマチャンドラン、V.検索シンプルな最短パスとサイクル。arXiv:1512.02157 [cs.DS] https://arxiv.org/pdf/1512.02157.pdf
[2]エップスタイン、D。k個の最短経路を見つける。SIAM Journal on Computing 28、2(1999)、652–673。
[3] Lawler、ELグラフのk最短経路の計算についてのコメント。ACMの通信、20(8):603–605、1977。