[解決済み】Dijkstraのアルゴリズムが負の重みのエッジに対して機能しないのはなぜですか?
2022-01-31 15:01:52
質問
ダイクストラのシングルソース最短路アルゴリズムが、なぜエッジが非負でなければならないと仮定しているのか、誰か教えてください。
負の重みのサイクルではなく、エッジのみの話をしています。
どのように解決するのですか?
Dijkstraのアルゴリズムで思い出してください。 ある頂点がquot;closed"としてマークされると(オープンセットから外れると)、アルゴリズムはその頂点への最短経路を見つけます。 そして、このノードを再び開発する必要はなく、このパスまで開発されたパスが最短であると仮定します。
しかし、負の重みの場合、そうでない場合もあります。たとえば
A
/ \
/ \
/ \
5 2
/ \
B--(-10)-->C
V={A,B,C} ; E = {(A,C,2), (A,B,5), (B,C,-10)}
A から来たダイクストラは、まず C を開発し、後で
A->B->C
EDIT もう少し深い説明をしてください。
これは重要なことで、各緩和ステップにおいて、アルゴリズムは「quot;closed"」ノードまでの「quot;cost"」が確かに最小であり、したがって次に選択されるノードも最小であると仮定しているからです。
その考え方は もし、openの中にコストが最小になるような頂点があるならば、その頂点に任意の
正の数
は、どのような頂点であっても、その最小性が変わることはありません。
正数の制約がなければ、上記の仮定は成り立たない。
閉じた各頂点が最小であることが分かっているので、quot;quot;quot; を振り返らずに、安全に緩和ステップを行うことができます。もし、振り返る必要があるのであれば ベルマンフォード は、そのための再帰的な(DP)解決策を提供している。
関連
-
[解決済み】Dijkstraのアルゴリズムが負の重みのエッジに対して機能しないのはなぜですか?
-
[解決済み】決定木(比較ソートアルゴリズム)の葉の最短の深さ)
-
[解決済み] 最小スパニングツリーは負の重みを恐れているのか?
-
[解決済み] 素朴な」アルゴリズムとは何か、「閉じた」解とは何か?
-
[解決済み] ベルマンフォードとダイクストラの比較。どのような状況下でベルマンフォードが優れているか?
-
[解決済み] ラジアンを度数に変換する方法は?
-
[解決済み] k-meansの時間計算量はどの程度ですか?
-
[解決済み] ゲーム「2048」の最適なアルゴリズムとは?
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
-
[解決済み] Breadth First Search (BFS)が同じことをより速くできるのに、なぜDijkstraのアルゴリズムを使うのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] DFS-Forest Componentとは?
-
[解決済み] グラフにおいて最小容量が最大となる経路の探索
-
[解決済み] 定数時間や対数時間よりも、nやnlog(n)の方が良いのでしょうか?
-
[解決済み] ベルマンフォードとダイクストラの比較。どのような状況下でベルマンフォードが優れているか?
-
[解決済み] DPLLアルゴリズムはどのように動作しますか?[クローズド]
-
[解決済み] CLRSの相対的漸近成長に関する問題(表)の解き方について教えてください。
-
[解決済み] アルゴリズムの教科書では、ソートされた配列について「増加」ではなく「非減少」を使っているのはなぜですか?
-
[解決済み] k-meansの時間計算量はどの程度ですか?
-
[解決済み] 複雑さ O(log(n)) は O(sqrt(n)) と同等か?
-
[解決済み] T = {<M> | Mはwを受け入れるときはいつでも$w^R$を受け入れるTMである}とする。Tが決定不可能であることを示せ