メインコンテンツへ
アルゴリズムとプログラミングアルゴリズム実践

A*アルゴリズムについての説明として最も正しいものはどれか。

ア.全経路を探索した後に最短経路を返す総当たりアルゴリズムである
イ.重みなしグラフでのみ有効な探索アルゴリズムである
ウ.ランダムなノードを選択して探索する確率的アルゴリズムである
エ.ヒューリスティック関数h(n)を利用してゴールに近いノードを優先的に探索する最良優先探索アルゴリズムである正解

解説

A*は「カーナビの賢い経路案内」そのもの。普通のダイクストラは「これまでの距離だけ」で判断するが、A*は「これまでの距離(g)+ゴールまでの推定距離(h)」を合計したf=g+hで判断する。地図上で目的地の方向にある道を優先して案内することで、余計な道を探索せずに最短経路を速く見つけられる!

なぜ エ が正解か

A*アルゴリズムの核心:評価関数 f(n) = g(n) + h(n)①g(n):スタートからノードnまでの実際のコスト②h(n):ノードnからゴールまでの推定コスト(ヒューリスティック関数)③f値が最小のノードを優先探索(最良優先探索)。h(n)が許容的ヒューリスティック(実際のコストを超えない推定)なら最適解を保証。ダイクストラはh(n)=0のA*の特殊ケースと見なせる。

なぜ ア は間違いか

総当たりは指数時間アルゴリズムであり、A*とは正反対。A*はヒューリスティックにより不要なノードの探索を省略することで効率化を図る。

なぜ イ は間違いか

A*は重み付きグラフで本領を発揮する。重みなしグラフだけに限定されるのはBFSの特性(重みなし最短経路)。A*はゲームマップや地図ナビのような重み付きグラフで広く使われる。

なぜ ウ は間違いか

ランダム選択は確率的アルゴリズム(モンテカルロ法など)の特徴。A*は決定的アルゴリズムであり、f値に基づいて確定的にノードを選ぶ。

出典: AI生成問題(学習用)