いくつかの最短経路アルゴリズムの比較

いくつかの最短経路アルゴリズムの比較

最短経路問題は、グラフ理論研究における古典的なアルゴリズム問題であり、グラフ(ノードとパスで構成される)内の 2 つのノード間の最短経路を見つけることを目的としています。

アルゴリズムの具体的な形式は次のとおりです。

出発点を決定する最短経路問題: つまり、出発ノードがわかっている場合に最短経路を見つける問題。

終点がわかっている最短経路問題は、始点を決定する問題の逆です。この問題は、終点ノードがわかっている場合に最短経路を見つけることです。無向グラフでは、この問題は開始点を決定する問題とまったく同じです。有向グラフでは、この問題はすべてのパスの方向を逆にして開始点を決定する問題と同等です。

開始点と終了点を決定する最短経路問題。つまり、開始点と終了点が与えられた場合、2 つのノード間の最短経路を見つけます。

グローバル最短経路問題: グラフ内のすべての最短経路を見つけます。

フロイド

複数のソースがあり、負の重みエッジがない最短パスを見つけます。マトリックスを使用してグラフを記録します。適時性は低く、時間計算量は O(V^3) です。

フロイド・ワーシャル アルゴリズムは、任意の 2 点間の最短経路を解くアルゴリズムです。有向グラフや負の重み付き最短経路問題を正しく処理できます。

Floyd-Warshall アルゴリズムの時間計算量は O(N^3) で、空間計算量は O(N^2) です。

フロイド・ワーシャルの原理は動的計画法です。

Di,j,k を、中間ノードとして (1..k) セット内のノードのみを持つ i から j への最短パスの長さとします。

最短経路が点 k を通過する場合、Di,j,k = Di,k,k-1 + Dk,j,k-1 となります。

最短経路が点 k を通過しない場合は、Di,j,k = Di,j,k-1 となります。

したがって、Di,j,k = min(Di,k,k-1 + Dk,j,k-1 , Di,j,k-1) となります。

実際のアルゴリズムでは、スペースを節約するために、元のスペースに対して直接反復処理を実行し、スペースを 2 次元に縮小することができます。

Floyd-Warshall アルゴリズムの説明は次のとおりです。

  1. k ← 1 から nまで 
  2. i ← 1 から nまで 
  3. j 1 から nまで 
  4. (Di,k + Dk,j < Di,j)の場合
  5. Di,j ← Di,k + Dk,j;

ここで、Di,j はポイント i からポイント j までのコストを表します。Di,j が ∞ の場合、2 つのポイント間に接続がないことを意味します。

ダイクストラ

単一のソースと負の重みのない最短パスを見つけます。適時性は良好で、時間計算量は O (V*V+E) です。

ソースポイントが到達可能な場合、O(V*lgV+E*lgV)=>O(E*lgV)。

疎グラフの場合、E = V * V / lgVなので、アルゴリズムの時間計算量はO(V ^ 2)になります。フィボナッチ ヒープを優先キューとして使用する場合、アルゴリズムの時間計算量は O (V*lgV + E) になります。

ベルマンフォード

単一のソースから最短経路を見つける場合、負の重み付きループがあるかどうかを判断できます (ある場合、最短経路はありません)。この方法は時間効率が良く、時間計算量は O(VE) です。

ベルマン・フォード アルゴリズムは、単一ソースの最短経路問題を解決するためのアルゴリズムです。

単一のソース ポイントに対する最短経路問題とは、重み付き有向グラフ G とソース ポイント s が与えられた場合に、グラフ G 内の任意のポイント v について、s から v への最短経路を見つけることを意味します。

Dijkstra アルゴリズムとは異なり、Bellman-Ford アルゴリズムでは、エッジの重みは負になることがあります。グラフ内にサイクル(v から始まり、いくつかの点を通過して v に戻る)が見つかり、このサイクル内のすべてのエッジの重みの合計が負であるとします。そして、このループを通じて、ループ内の任意の 2 点間の最短経路は無限に小さくなる可能性があります。この負のループが処理されない場合、プログラムは永久に実行されます。 Bellman-Ford アルゴリズムには、このような負のループを区別する機能があります。

SPFA

これは、比較的適時性と時間計算量が O(kE) に優れたベルマン・フォード キュー最適化です。 (k<<V)。

Bellman-Ford アルゴリズムと同様に、SPFA アルゴリズムは一連の緩和操作を使用して、グラフ内の特定のノードから他のすべてのノードへの最短パスを取得します。違いは、SPFA アルゴリズムがキューを維持するため、ノードの現在の最短パスが更新された後、他のノードをすぐに更新する必要がないため、繰り返し操作の数が大幅に削減されることです。

SPFA アルゴリズムは、ダイクストラ アルゴリズムとは異なり、負のエッジ重みを持つグラフに使用できます。

Dijkstra アルゴリズムや Bellman-ford アルゴリズムとは異なり、SPFA の時間効率は不安定です。つまり、異なるグラフに必要な時間は大きく異なります。

最良のケースでは、各ノードは一度だけキューに入れられ、アルゴリズムは実際には幅優先のトラバーサルになり、時間の複雑さは O(E) のみになります。一方、各ノードが (V-1) 回キューに入れられる例もあり、その場合、アルゴリズムは時間計算量が O(VE) のベルマンフォード アルゴリズムに退化します。

SPFA アルゴリズムは、負のエッジ重みグラフ上の Bellman-Ford アルゴリズムを完全に置き換えることができ、スパース グラフでも優れたパフォーマンスを発揮します。ただし、非負のエッジ重みグラフでは、最悪の事態を回避するために、より効率的で安定した Dijkstra アルゴリズムとそのヒープ最適化バージョンが通常使用されます。従来の SPFA アルゴリズムは、グリッド グラフのクラスではパフォーマンスが低下します。

【編集者のおすすめ】

  1. 階乗関連のアルゴリズムとその C++ 実装
  2. 「スペースを時間で交換する」アルゴリズムはキャッシュの世界へとあなたを導きます
  3. 文字の組み合わせをソートするJavaアルゴリズム
  4. 現在世界で最も重要な古典的アルゴリズムトップ10

<<:  ダイクストラアルゴリズムに関する予備的研究

>>:  現在世界で最も重要な古典的アルゴリズムトップ10

ブログ    

推薦する

...

...

Lilith モバイルゲームにおける不正防止の設計と調査

1. モバイルゲーム闇産業チェーンまず、モバイルゲームのブラック産業チェーンを紹介します。これは基本...

AIアルゴリズムエンジニアの涙の体験談

[[425033]]私たちはしばらくの間、展開モデルの最適化に取り組んできました。ここ数日でようやく...

...

...

コンピュータービジョン GPT の瞬間!カリフォルニア大学バークレー校の3つの巨人が最初の純粋なCV大規模モデルを発表し、その推論はAGIの火花を示した

コンピューター ビジョンの GPT の瞬間が到来しました。最近、カリフォルニア大学バークレー校のコン...

早く見て! 2022年の建設業界の7つの大きな発展トレンド!

建設業界の市場競争はますます激しくなっています。建設会社は生き残りと発展のために大きなプレッシャーに...

不妊治療の新たな夜明け:AI

世界初の試験管ベビーは1978年に英国で誕生した。それ以来、人工生殖技術は継続的に改良されてきました...

テクノロジーを活用して伝染病と闘う上で、人工知能はどのような役割を果たすのでしょうか?

業界の需要が変化するにつれて、5G、AI、ビッグデータなどの新しいテクノロジーが登場し、従来の業界に...

GPT-4 はグラフィカル推論を実行できないのですか? 「手放す」後も、正解率は33%にとどまる

GPT-4 のグラフィカル推論能力は人間の半分以下?米国のサンタフェ研究所の調査によると、 GPT-...

中国科学技術大学が提案したCNNとTransformerのデュアルネットワークモデルの精度は84.1%にも達する

[[416636]] Transformer と CNN はどちらも独自の利点を持ち、視覚表現を処理...

Appleは10年間で28社のAI企業を売却。そのAI戦略は世間の注目を集めることだ!

10年前の2010年2月、同社初のバーチャルパーソナルアシスタントアプリであるSiriがApple...