FIG-046

ダイクストラ法 — いちばん安い道から確定する

アルゴリズム 2026.06.23 公開 読了 約12分

カーナビは「いちばん近い道」をどう見つけているのでしょう。やみくもに全部の道を試すのではなく、今わかっている中でいちばん安く着けそうな地点から順に調べていきます。これがダイクストラ法の考え方です。各地点まで「最小いくらで来られるか」を更新しながら、コストの小さい所から扇状に探索を広げます。

ポイントは距離(コスト)に差があっても正しく最短を出せること。下の図1には、通れないと、通れるけど時間のかかる砂地(コスト3)があります。1ステップ自動再生で探索の広がりを観察し、ゴールに着いたら引かれる最短経路を見てください。マス目をクリックすると壁を足したり消したりできます。

開始 ゴール 候補 確定 最短経路 砂地 ×3
「1ステップ」または「自動再生」で探索を始めましょう。開始マスから扇状に広がります。
図1 — コストが小さい候補マスから順に確定。砂地(×3)を避けて、いちばん安い道がゴールまで引かれる

なぜ「いちばん安い候補から」なのか

ダイクストラ法は、確定したマスのコストは二度とくつがえらないという保証のうえに成り立っています。今ある候補の中で最小コストのマスを選んで確定すれば、それより安く後から到達する経路は存在しません(コストがマイナスにならない限り)。だから確定したマスから隣へコストを伝え、また最小の候補を選ぶ —— これを繰り返すだけで、ゴールに着いたときにはそこまでの最短コストが確定しているのです。

図1で砂地(コスト3)を無理に突っ切るより回り道した方が安いとき、探索はちゃんと回り道側を選びます。ちなみに「ゴールの方向へ優先的に探す」ヒントを足して無駄な探索を減らしたものが A*(エースター)です。考え方の土台はダイクストラと同じで、当てずっぽうの一歩を足すだけ。壁を描き替えて、探索の広がり方と最短経路がどう変わるか試してみてください。

用語ミニ辞書
ダイクストラ法
各地点までの最小コストを更新し、最小の候補から確定して最短経路を求める手法。
コスト(重み)
そのマスを通るのに必要な手間。図では平地1・砂地3。負の値は扱えない。
候補 / 確定
候補=到達コストが分かったが未確定。確定=最小コストが定まったマス。
A*
ゴール方向の推定(ヒューリスティック)を足し、無駄な探索を減らした発展形。

まとめ

ダイクストラ法は「今わかっている中でいちばん安い所から確定していく」だけの、素直で強いアルゴリズムです。コストに差があっても最短を取りこぼさず、カーナビ・ネットワーク経路・ゲームのAIまで広く使われています。図1で、探索がコストの低い方へ優先して広がり、砂地を避けて最短経路が引かれる様子を、ステップを進めながら味わってみてください。