ALGO_SPEC: ダイクストラ法
新人エンジニアが学ぶべき、最短経路探索の王道アルゴリズムです。カーナビゲーションシステムやネットワークルーティング(OSPFなど)の強固な土台となっています。
1. コストの「緩和 (Relaxation)」
スタート地点からの距離(コスト)を最初は「無限大(infty)」としておき、より短いルートが見つかるたびに値を更新していく処理を「緩和」と呼びます。このゲームでも、緑色に繋がっていくたびに内部でコストが緩和されています。
2. 貪欲な選択 (Greedy Approach)
常に「現時点で最もコストが小さい未確定ノード」を次々に確定させていくアプローチを取ります。なお、負のコスト(マイナスの距離)を持つエッジが存在しない場合にのみ、正しい結果が保証されます。
3. データ構造と計算量
探索するノードを選ぶ際、単純な配列を使うと計算量は O(V^2) となりますが、優先度付きキュー(Min-Heap)を使うことで、計算量を O((V+E) log V) に劇的に抑えることができます(V は頂点数、E は辺数)。
4. 実務での視点
実用的なAIやゲームの経路探索では、ダイクストラ法に「ゴールへの方向(ヒューリスティック関数)」を加えた A* (A-star) アルゴリズム が多用されます。ダイクストラ法はその母体として必須の知識です。