全プロセスの詳細解説
-
ノード 1(始点から一エッジ、コスト 4) 5 ステップ
ノード1は始点からコスト4の辺1本で結ばれているが、アルゴリズムはその距離を3と報告している。確定順序を順に追い、この3がどこから生じたのかを突き止めよ。
-
ダイクストラ法はノードを距離の近い順に確定させていき、一度確定したノードを再訪問することはない。この順序づけこそがアルゴリズムの全容であり、証明のすべてである。あるノードが確定した時点で、それ以上に低コストな経路が存在することはあり得ない。なぜなら、仮にそのような経路が存在するならば、すでにそのノードよりも遠くにある未確定ノードを経由しなければならないからである。
-
始点から出る2本の直接の辺により、仮の距離として4と2が得られる。どちらもまだ確定した値ではなく、これらは上界に過ぎない。
-
最も近いのはノード3(距離2)であり、これが最初に確定する。その辺を緩和すると、ノード1へ至るコスト 2 + 1 = 3 の経路が見つかり、直接の辺によるコスト4よりも低くなる。これこそが問題の問いに答えるステップである。すなわち、隣接ノードへの最も安い経路は、必ずしもそのノードへの直接の辺であるとは限らない。
-
ノード1が3で確定し、そこから辺を緩和することでノード2に距離8で到達する。
-
ノード4へは、距離8でノード3を経由して到達可能であり、ノード2を経由するもう一つの経路のコストは 8 + 3 = 11 となるため、より短い方が採用される。
解答
ツールは各距離として 3、8、2、8、そして最短経路として 0 → 3 → 4 を表示する。教訓はノード1にある。直接の辺は最短経路ではなく、貪欲法による確定こそが、それを指数関数的ではなく低コストで発見することを可能にしている。ただし、この保証には1つの前提条件がある。重みが非負であることだ。負の辺が存在すると、早期に確定したノードが後から改善される可能性が生じ、ステップ1における証明は崩壊する。『負の辺』プリセットをクリックすると、2つの側面で同時に破綻する様子が観察できる。ノード3はどの経路からも生じ得ない−1という距離を返し、経路復元は「経路なし — 先行ノードがループを形成している」と出力して完全に断念する。すべての重みが非負であれば証明可能に正しいアルゴリズムから、誤った数値が出力され、経路も得られなくなるのである。
-
参考文献 (2)
- The three-page paper, in which the shortest-path algorithm is the SECOND of the two problems: E. W. Dijkstra, "A note on two problems in connexion with graphs." Numerische Mathematik 1, 269–271, 1959.
- The algorithm the negative-edge preset points you to, which tolerates negative weights and detects a negative cycle instead of answering as though there were none: R. Bellman, "On a routing problem." Quarterly of Applied Mathematics 16(1), 87–90, 1958.