この記事では、まず単一ソース最短経路問題から始め、次にベルマン・フォード アルゴリズムについて説明し、最後にダイクストラアルゴリズムについて具体的に説明します。ダイクストラ アルゴリズムの各ステップを詳細に説明および分析し、このダイクストラ アルゴリズムを徹底的に理解できるようにします。 1. 単一ソース最短経路問題 単一ソースの最短経路問題とは、グラフ G=(V, E) が与えられたときに、固定ソース頂点 s<-V から各 v<-V までの最短経路を見つけることが求められる問題です。簡単に言えば、グラフ G 内の固定点 s を見つけ、次に s を開始点として使用して、s からグラフ G 内の残りの点までの最短距離または経路を見つけることです。 この単一ソースの最短経路問題には、次のバリエーションがあります。 I. 単一目的地最短経路問題: 各頂点 v から指定された目的地 t までの最短経路問題。つまり、単一ソース最短経路問題の相対的な問題です。 II. 単一の頂点ペアの最短経路問題: 頂点 u と v が与えられた場合、u から v への最短経路を見つけます。 III. 各頂点間の最短経路問題: 任意の 2 つの頂点 u と v について、u から v への最短経路を見つけます。最も単純なアイデアは、各頂点をソース ポイントとして扱い、単一ソース アルゴリズムを 1 回実行することでこの問題を解決することです。もちろん、もっと良い方法があります。 2. ベルマンフォードアルゴリズム 1. 回路の問題 最短パスには、負の重み付けされたループまたは正の重み付けされたループを含めることはできません。ダイクストラのアルゴリズムなどの一部の最短経路アルゴリズムでは、グラフ内のすべてのエッジの重みが非負である必要があります。たとえば、道路地図では、固定点 s から目的の頂点 v までの最短経路を見つける問題が解決されます。 2. ベルマンフォードアルゴリズム Bellman-Ford アルゴリズムでは、ソース ポイントから到達可能な負の重みのループがない限り、入力グラフに負の重みのエッジが存在することが許可されます。簡単に言えば、グラフには負の重みのエッジが存在する可能性がありますが、これらの負の重みのエッジは負の重みのループを構成せず、ループの形成に影響を与えません。さらに、ベルマンフォード アルゴリズム自体は、グラフ内のソース ポイントから到達可能な負の重みループがあるかどうかを判断できます。負の重みループがある場合、アルゴリズムは FALSE を返し、ない場合は TRUE を返します。 ベルマンフォードアルゴリズムの詳細な説明 ベルマンフォード(G、w、s)
上記から、ベルマンフォードアルゴリズムの時間計算量は O(V*E) であることがわかります。 3. グラフに負の重みループが含まれているかどうかという質問に関して: 定理によれば、uはvの親であると仮定する。すると、G(V,E)が有向グラフまたは無向グラフ(負の重みループを含まない)の場合、s<-V、sはGの任意の頂点であり、任意の辺(u、v)<-Vに対して、 d[s,v] <= d[s,u]+1 である。 この定理の詳細な証明については、『アルゴリズム入門』の第 22 章の補題 22.1 の証明を参照してください。あるいは、第 24 章の三角不等式を使用したベルマン-フォードアルゴリズムの正しさの証明に基づいて、上記の定理のバリエーションを導き出すこともできます。 つまり、グラフGに負の重みループが含まれていないと仮定すると、次のことが証明できる。
したがって、負の重みサイクルを含まないグラフでは、d[v]<=d[u]+w(u,v) と結論付けることができます。 したがって、上記のベルマンフォードアルゴリズムでは、d[v] > d[u]+w(u,v)の場合、=> 負の重みループが含まれ、FASLEが返されることは理解しにくいことではありません。 そうでない場合、=> に負の重みループが含まれていない場合は、TRUE を返します。 さて、ダイクストラアルゴリズムに移りましょう。 3. ダイクストラアルゴリズムをわかりやすく説明し、徹底的に分析する I. リラクゼーションテクニックの紹介 RELAX ダイクストラアルゴリズムは緩和技術を使用します。各頂点 v<-V に対して、ソースポイント s から v までの最短パスの重みの上限を記述する属性 d[v] が設定されます。 まず、最短経路を推定し、先行ノードを初期化するのに O(V) の時間がかかります。
II. ダイクストラアルゴリズム このダイクストラ アルゴリズムには、INSERT (行 3)、EXTRACT-MIN (行 5)、および DECREASE-KEY (行 8 の RELAX、この減分キー操作を呼び出す) の 3 つのステップがあります。
4. ダイクストラアルゴリズムの実行時間 先に進む前に、問題を述べなければなりません。DIJKSTRA (G, w, s) アルゴリズムの 5 行目、EXTRACT-MIN (Q) は、最小優先度キューの具体的な実装です。ダイクストラ アルゴリズムの実行時間は、この最小優先度キューの特定の実装によって異なります。 最小優先度キューの 3 つの実装方法: 1. 1 から |V| まで番号が付けられた頂点を使用して、各 d[v] を、上記の DIJKSTRA(G, w, s) に示すように、配列内の対応する v 番目の項目に格納します。ダイクストラのアルゴリズムの実行時間は O(V^2+E) です。 2. 最小優先度キューがバイナリ/アイテムヒープによって実装されている場合、EXTRACT-MIN(Q) の実行時間は O(V*lgV) なので、ダイクストラのアルゴリズムの実行時間は O(V*lgV+E*lgV) です。すべての頂点がソースポイントから到達可能な場合、O((V+E)*lgV)=O(E*lgV) です。疎グラフの場合、E=O(V^2/lgV)となり、このダイクストラアルゴリズムの実行時間はO(V^2)となります。 3. フィボナッチヒープを使用して最小優先度キューを実装する場合、EXTRACT-MIN(Q) の実行時間は O(V*lgV) なので、このダイクストラアルゴリズムの実行時間は O(V*lgV+E) になります。 要約すると、この最小優先度キューの 3 つの実装方法は次のように比較されます。 |V|<<|E|の場合、DIJKSTRA(G, w, s) + FIB-HEAP-EXTRACT-MIN(Q)、つまりフィボナッチヒープを使用して最小優先度キューを実装します。 5. ダイクストラアルゴリズム + FIB-HEAP-EXTRACT-MIN(H)、最小優先度キューを実装するためのフィボナッチヒープ 上記から、フィボナッチ ヒープを使用して最小優先度キューを実装すると、実行時間が O (VlgV + E) に改善されることがすでにわかっています。 |V| EXTRACT-MIN操作(それぞれ償却コストO(lgV))、および|E| DECREASE-KEY操作(それぞれ償却時間O(1))。 次に、DIJKSTRA(G, w, s) におけるフィボナッチヒープを用いた最小優先度キューの実装操作に焦点を当てます。 上記から、DIJKSTRA アルゴリズムには次の 3 つのステップが含まれていることがすでにわかっています。 INSERT (行 3)、EXTRACT-MIN (行 5)、および DECREASE-KEY (行 8 の RELAX)。 まず、ダイクストラアルゴリズム + FIB-HEAP-EXTRACT-MIN(H) のアルゴリズムを直接示します。
6. ダイクストラ法+フィボナッチヒープの各ステップの詳細な分析 さて、次に、上記の操作を段階的に詳しく説明します。 行3のINSERT操作:
5行目のEXTRACT-MIN演算:
次の図は、FIB-HEAP-EXTRACT-MIN プロセスの概略図です。
8行目のRELAXの操作は上記に示されています。
一般的に、ダイクストラのアルゴリズムでは、DECREASE-KEY は EXTRACT-MIN よりもはるかに頻繁に呼び出されます。 以下は、バイナリ ヒープ、二項式ヒープ、フィボナッチ ヒープのさまざまな操作の時間計算量の比較です。 操作 バイナリヒープ(最悪の場合) 二項式ヒープ(最悪の場合) フィボナッチヒープ(償却) ヒープを作る Θ(1) Θ(1) Θ(1) フィボナッチ ヒープについては、今後このブログでさらに詳しく調査し、詳しく説明する予定です。同時に、この記事は今後も深化と拡張を続けていきます。 オリジナルリンク: http://blog.csdn.net/v_JULY_v/archive/2011/02/13/6182419.aspx 【編集者のおすすめ】
|
<<: Googleが4月22日に発表したアルゴリズム改善策の分析
[[335755]]タイムトラベルの超能力を与えられたら、どの歴史上の人物と話をして過去に戻りたい...
DALL-E 3がネットユーザーの間で大流行!アイアンマンやバットマンをこんな風に見たことがあります...
ロシアとウクライナの紛争が始まって2週間、データ分析会社パランティアのCEO、アレクサンダー・カープ...
[[340820]] [51CTO.com クイック翻訳] 過去10年間、人工知能をめぐって大きな議...
[[410827]] [51CTO.com クイック翻訳]急速な技術開発と進歩の時代において、個人情...
AI が生成した画像は非常にリアルなので、AI 自身も違いを区別できません。マスク氏とロボットのガ...
[[248875]]画像出典: Visual China本質的に、この記事は AI ライティングを...
「エネルギー自己教師学習っていったい何?」と多くのRedditネットユーザーがコメントした。ちょう...
自撮り写真を他人が撮った写真に変えることもできます。魔法の写真編集の世界に新しいトリックが登場し、そ...
この本の最初の 2 章では、進化アルゴリズムをやや抽象的な意味で定義しています。スコアリング、選択、...
フォーブスは10月2日、寄稿者ティム・バジャリン氏による記事を掲載し、中国ロボットの利点と、中国と米...
11月8日、英国アバディーン大学の研究機関がAIがもたらす変化について詳細な調査を実施し、最新の研...
地元警察は、ここ数日話題になっている「グーグルの人員削減により清華大学の夫婦が自殺」事件の詳細を発表...