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

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

最短経路問題は、グラフ理論研究における古典的なアルゴリズム問題であり、グラフ(ノードとパスで構成される)内の 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

推薦する

MIT、Wikipedia の更新、間違いの修正、偽ニュースの特定を行う AI 編集システムを開始

[[334141]]誰でも編集できるオンライン百科事典である Wikipedia では、各エントリを...

...

TSMC、7nmチップの商業生産を開始

TSMCのCEOである魏哲佳氏は、TSMCの7nm生産能力の増加が予想よりも遅いという最近の憶測を否...

あなたの工場ではエッジ AI を導入する必要がありますか?

より多くの製造企業が人工知能 (AI) ツールを活用してデータにアクセスし、リアルタイムで対応するこ...

考えてみると恐ろしいですね!人工知能は、成功率70%で人間の行動を操作することを学習したと疑われている。

人工知能に関しては、多くの人が懸念を表明しています。例えば、人類開発の最前線にいるホーキング博士とマ...

実践 | 人工知能が小売体験を向上させる 20 の例

小売体験は長年にわたってあまり変わっていません。つまり、店に入って、適切な製品を見つけて、それを購入...

...

新しい研究:ハトは人工知能と同様の方法で問題を解決する

オハイオ州立大学とアイオワ大学の研究者による研究で、ハトは問題を解決する際に人工知能に似た「力ずく」...

Facebook は 10 億枚のソーシャル ソフトウェア写真を使用して新しい AI アルゴリズムをトレーニングします

Facebook の研究者は最近、インターネット上のランダムなラベルなし画像のセットから学習できる新...

快手科技のY-tech AI Labが「2019 CCF科学技術賞」を受賞

より多くの中級・低級モデルでハイコンピューティングAIタスクを普及させるために、快手が自社開発した「...

AIはキーボードの音を聞いてパスワードを盗むことができ、その精度は最大95%

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

マイクロソフト、NvidiaとIntelに対抗する2つのカスタムAIチップをリリース

マイクロソフトは最近、シアトルで開催されたIgniteカンファレンスで2つのAIチップをリリースした...

人工知能が伝統文化に新たな命を吹き込む。パンダ型ロボット「Youyou」が「新年クロストーク会議」に登場

「パンダはトークができる、パンダはジョークを言うことができる、パンダは書道を書ける、そしてパンダはチ...

機械学習のパフォーマンスを最適化するために必要な 6 つの指標

実行している機械学習の種類に応じて、モデルのパフォーマンスを測定するために使用できるメトリックは多数...