ダイクストラ法の最短経路計算
辺のリストにダイクストラ法を適用し、始点からの最短距離と経路、訪問と更新を示すステップごとの表を求めます。有向グラフ・無向グラフのどちらにも対応しています。
各ステップでは、未訪問のノードのうち現在わかっている距離が最も短いもの(同順位ならリストで先に出たもの)を訪問し、その隣接ノードを更新します。
| ノード | 距離 | 直前のノード | 経路 |
|---|---|---|---|
| s | 0 | (開始) | s |
| t | 8 | y | s → y → t |
| y | 5 | s | s → y |
| x | 9 | t | s → y → t → x |
| z | 7 | y | s → y → z |
| ステップ | 訪問 | 距離 | 更新 | s | t | y | x | z |
|---|---|---|---|---|---|---|---|---|
| 1 | s | 0 | t = 10, y = 5 | 0 | 10 | 5 | ∞ | ∞ |
| 2 | y | 5 | t = 8, x = 14, z = 7 | ✓ | 8 | 5 | 14 | 7 |
| 3 | z | 7 | x = 13 | ✓ | 8 | ✓ | 13 | 7 |
| 4 | t | 8 | x = 9 | ✓ | 8 | ✓ | 9 | ✓ |
| 5 | x | 9 | — | ✓ | ✓ | ✓ | 9 | ✓ |
ダイクストラ法は、辺の重みが負でないグラフで、1つのノードから他のすべてのノードへの最短経路を求めます。経路案内、ネットワークのルーティング、多くの教科書の演習問題の基礎になっているアルゴリズムです。辺をリストで入力して開始ノード(任意で終了ノード)を選ぶと、この計算ツールがすべての最短距離と経路、そして手作業で追うときのように、どのノードを訪問してどの距離を更新したかを示すステップごとの表を出力します。
使い方
- 1行に1本ずつ、始点・終点・重みを入力します(A B 4)。
- 一方向の辺なら「有向」をオンに、双方向ならオフのままにします。
- 開始ノードと、必要なら終了ノードを入力します。
- 距離と経路、全ノードの表、ステップごとの過程を確認します。
計算式
繰り返し:未訪問ノードのうちd(u)が最小のuを訪問 · u → vの辺(重みw)ごとに、d(u) + w < d(v)ならd(v) = d(u) + w、prev(v) = u
開始ノード(0)を除くすべての距離は∞から始まります。ノードを訪問するとその距離は確定しますが、これは重みが負でない場合にのみ保証されるため、負の重みは受け付けません(ベルマン–フォード法なら扱えます)。経路は、prevをたどって開始ノードまで遡って復元します。同順位の場合は先に書いたノードが優先されます。並行する辺も許可され、安いほうが採用されます。
計算例
サンプルは『Introduction to Algorithms』(CLRS)の図24.6の有向グラフです。sから出発すると、訪問順はs(0)、y(5)、z(7)、t(8)、x(9)です。xまでの最短経路はs → y → t → x、長さ9(5 + 3 + 1)です。直接つながっているように見えるs → tの辺(10)は、s → y → t(8)に負けます。
よくある質問
ダイクストラ法が負の重みを扱えないのはなぜですか?
ノードを訪問した時点でその距離を確定するためです。後から見つかった負の辺がその距離をさらに小さくする可能性があり、答えが間違ってしまいます。代わりにベルマン–フォード法を使ってください。
辺の順序は関係ありますか?
関係するのは同順位のときだけです。未訪問の2つのノードの距離が同じなら、リストで先に出たほうを先に訪問します。距離そのものは順序に左右されません。
「到達不可」とはどういう意味ですか?
開始ノードからそのノードへ至る経路がないということです。有向グラフでは、辺がすべて逆向きになっていることもあります。
出典
最終更新:
この入力内容のページアドレス: https://kakao.mobile/ja/tools/dijkstra-visualizer/
このツールを引用する
kakaoCalc. (2026, November 8). ダイクストラ法の最短経路計算. https://kakao.mobile/ja/tools/dijkstra-visualizer/
“ダイクストラ法の最短経路計算.” kakaoCalc, 8 Nov. 2026, kakao.mobile/ja/tools/dijkstra-visualizer/.