【だいくすとらほう】

ダイクストラ法 とは?

💡 「一番近い場所から順番に確定」——地道だけど確実な最短ルート探し
📌 このページのポイント
ダイクストラ法 — 最短経路の探索 S 始点(0) A 距離→ 2 B 距離→ 5 C 距離→ 5 D 距離→ 6 G 距離→ 8 2 5 3 6 1 3 4 最短経路(S→A→C→G = 8)
重み付きグラフでの最短経路探索
ひよこ ひよこ

ダイクストラ法ってカーナビみたいなもの?

ペンギン先生 ペンギン先生

まさにカーナビの中身で使われているアルゴリズムだよ!街を「交差点(ノード)」と「道路(辺)」のグラフとして表して、出発地から目的地までの最短ルートを見つけるんだ

ひよこ ひよこ

どうやって最短ルートを見つけるの?

ペンギン先生 ペンギン先生

やり方はシンプルだよ。まず出発地の距離を0、他の全地点を「無限大」にする。次に「まだ確定していない中で一番距離が短い地点」を選んで確定する。そこから行ける隣の地点の距離を更新して、また一番近いものを確定…これを繰り返すだけだよ

ひよこ ひよこ

全部のルートを試すわけじゃないんだ!

ペンギン先生 ペンギン先生

そう、それが賢いところだよ。「一番近い未確定ノードを確定する」というルールのおかげで、無駄な探索を省けるんだ。優先度付きキューを使えば効率よく実装できるよ

ひよこ ひよこ

弱点とかある?

ペンギン先生 ペンギン先生

道路の重み(距離やコスト)がマイナスだと正しく動かないんだ。「通ると距離が減る道」があるとアルゴリズムの前提が崩れてしまう。その場合はベルマン・フォード法という別のアルゴリズムを使うよ。あとA*アルゴリズムというダイクストラ法を改良したものもあって、ゲームAIではそちらが定番だね

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ダイクストラ法」って出てきたら「近い順に確定していく最短経路アルゴリズム」と思えればだいたいOK!
📖 おまけ:英語の意味
「Dijkstra's Algorithm」 = ダイクストラのアルゴリズム
💬 1956年にオランダの計算機科学者エドガー・ダイクストラが、わずか20分で考案したと言われているよ。論文発表は1959年だったんだよ
← 用語集にもどる