動的グラフの最短経路を取得する


24

現在、有向グラフの最短経路を研究しています。ダイクストラやベルマンフォードのよ​​うに、ネットワーク内の最短経路を見つけるための多くの効率的なアルゴリズムがあります。しかし、グラフが動的な場合はどうでしょうか?動的とは、プログラムの実行中に頂点を挿入または削除できることを意味します。新しいグラフで最短経路アルゴリズムを再度実行する必要なく、エッジeを挿入した後、頂点から他のすべての頂点uへの最短経路を更新するための効率的なアルゴリズムを見つけようとしています。これどうやってするの?前もって感謝します。vue

  • 注:変更は、アルゴリズムの最初の反復後に行うことができます
  • 注[2]: 2つのノード、はソース、tはターゲットです。これらのノード間の最短パスを見つける必要があります。グラフが更新されたら、π s t を更新するだけです。これはstの最短経路です。stπ(s,t)st
  • 注[3]:エッジ挿入の場合にのみ興味があります。

正式な定義:グラフ与えられた場合。定義更新操作を)1と、エッジの挿入Eに対してE)は、エッジのアミノ酸欠失または2 EからEを。目的は、更新操作後のすべてのペアの最短パスのコストを効率的に見つけることです。効率的には、少なくとも更新操作の後に、Bellman-FordアルゴリズムなどのAll-Pairs-Shortest-Pathアルゴリズムを実行するよりも優れています。G=(V,E)eEeE


編集:以下に問題の簡略版があります:

重み付きグラフが与えられ、単方向のエッジと2つの重要な頂点sおよびtで構成されます。候補の双方向エッジのセットCも提供されます。私はエッジを構築しなければならないU V Cはからの距離を最小にするために、STG(V,E)stC(u,v)Cst


より明確な質問:パスのエンドポイントは常に固定されていますか?エッジ挿入の場合のみ、またはグラフの任意の変更のみに関心がありますか?あなたの質問に答える研究があると思いますが、残念ながら私は本当にどこを見ればいいのかわかりません。Googleで簡単に検索すると、非常に役立つと思われるこれらのスライドが表示されます。このペーパーでは「動的グラフの最短パス」(リンクが機能することを願っています)。(u,v)
usul

回答:


14

お気づきのとおり、この問題は非常に難しい問題です。Webをチェックすると、おそらく必要のない複雑なインスタンスになります。これが解決策です-必要に応じて(つまり、すべてをゼロから再計算する必要はありません)。

エッジを追加する場合-すでに構築されている距離行列を使用する場合-以下を実行します。(u,v)

ノードyのすべてのペアについて、d x u + c u v + d v y < d x y -これができるかどうかを確認しますノードのすべてのペアを比較しているため、O n 2)でxyd((x,u))+c((u,v))+d((v,y))<d((x,y))O(n2)

エッジ削除の場合:距離行列がすでに構築されている場合、すべてのノードに対して、uをルートとする最短パスツリーを作成できます。削除されたエッジeがそのツリーにない場合、uから他のすべてへの最短パスは影響を受けません(それらは同じままです)。uueu

uの最短パスツリーにある場合、最短パスπ u v eが含まれるように、すべてのノードvについて、パスが変更されます。したがって、uからvへの最短経路を計算します。ここで、すべてのノードについて前の手順を繰り返します。これは最善の解決策ではありません。実際、最悪の場合、すべてをゼロから行うことに漸近的に相当しますが、平均的には改善される可能性があります。 euvπ(u,v)euv

これよりも良い結果を得たい場合は、以下をご覧ください。

  1. デメトレスク、カミル、ジュゼッペ・F・イタリアーノ。「動的なすべてのペアの最短経路への新しいアプローチ。」Journal of the ACM(JACM)51.6(2004):968-992。(Googleから自由に見つけることができます)

  2. または、このうまく書かれた調査を見てください


17

あなたが求めている問題は、よく知られているアルゴリズムの問​​題です。それは実際にまだ開いている、この問題が正確にどれほど難しいか。また、この問題にはさまざまな化身があることを知っておく必要があります。これとは対照的に、通常は距離のみが返されますが、実際の最短経路を求めています。これらのパスはすでに非常に長くなる可能性があることに注意してください。動的グラフアルゴリズムは、エッジの削除のみ(デクリメンタルdgアルゴリズム)、エッジの挿入のみ(インクリメンタルdgアルゴリズム)、エッジの挿入と削除(完全に動的なdgアルゴリズム)を区別します。したがって、増分アルゴリズムに興味があります

O(n2(logn+log2(1+m/n))O(1)O(nlogn)エッジを使用すると、ダイクストラとフィボナッチヒープを使用してゼロから再計算し、Thorupのアルゴリズムと同じ実行時間を取得できます。したがって、グラフが密集していない場合は、ダイクストラを使用することをお勧めします。

より良いインクリメンタルアルゴリズムについては知りません。ただし、この特殊な問題の新しい結果が存在する場合は、Web検索を実行する必要があります。


(s,t)

@RondogiannisAristophanesは実際のところ、これまでに提案されてきたことは何とか最高です。「重み付き有向グラフまたは無向グラフの増分および減分単一ソース最短パス問題は、強い意味で、少なくとも静的な全ペアの最短パスと同じくらい難しい」と主張するこの論文をご覧ください。問題。" (正直なところ、私はイントロだけを読みました)-参照:「動的な最短経路の問題について」、ロディティとズウィック-しかし、あなたが持っている正確な問題は何ですか?具体的なシナリオは何ですか?今まで何を着ましたか?-多分私達はあなたをよりよく助けることができる。
AJed

@RondogiannisAristophanesは、パフォーマンスが向上するほど(ほとんどの場合)実装するのが難しくなり、実際のアプリケーションではパフォーマンスをそれほど向上させる必要がない場合があります。
AJed

@AJed投稿を編集して、問題の簡単な説明を追加しました。
ロントギアニスアリストファニス

5

AD *アルゴリズムが役立つと思います。

http://www.cs.cmu.edu/~ggordon/likhachev-etal.anytime-dstar.pdf

基になるグラフに関する更新された情報が受信されると、アルゴリズムは以前のソリューションを段階的に修復します。その結果、いつでも増分プランナーの利点を組み合わせて、複雑で動的な検索問題に対する効率的なソリューションを提供するアプローチが実現します

AD *のハイライト:「いつでも」です。つまり、最適ではないかもしれませんが、「準最適なソリューション」を非常に迅速に提供できます。ただし、十分な時間があれば、最適なソリューションが返されます。また、ユーザー定義の定数によって、次善のソリューションが最適なソリューションより悪くならないように制限できます。これにより、大丈夫なソリューション(「大丈夫」が理論的に制限されている)がソリューションをまったく持たないよりも優れているリアルタイム計画シナリオでこれを使用することができます。

http://www.cs.cmu.edu/~maxim/software.html

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.