【えーすたーあるごりずむ】

A*アルゴリズム とは?

最終更新:
💡 「ここまで+あとどれくらい?」で次の候補を選ぶ

現在までの経路コストとゴールまでの推定コストを足して、次に調べる候補を選ぶ経路探索アルゴリズム。評価値と最短経路を得るための条件を説明します。

📌 このページのポイント
A*:ここまで+残りの見積もりf = g(ここまで)+ h(残りの推定)候補A3 + 4 = 7合計の見積もり候補B5 + 1 = 6この二つなら先に調べる探索待ちの候補から、fが小さい順に選ぶ
探索待ちの候補を比べる数値例。fは推定値であり、完成した経路の最終コストを示すものではありません。
ひよこ ひよこ
A*は、ゴールに近い場所から調べるの?
ペンギン先生 ペンギン先生
近さの見積もりだけではなく、ここまでの経路コストgと、ゴールまでの推定コストhを足すんだ。探索待ちの候補の中でf=g+hが小さいものを優先して調べるよ。
ひよこ ひよこ
どんなふうに足すの?
ペンギン先生 ペンギン先生
候補Aがg=3、h=4ならf=7。候補Bがg=5、h=1ならf=6だから、この二つならBを先に調べる。ゴールに着くまでの合計を見積もっているんだ。fは推定値で、最終的な経路コストとは区別しよう。
ひよこ ひよこ
ゴールまでの推定はどう作るの?
ペンギン先生 ペンギン先生
距離をコストにする地図なら、直線距離を下限の見積もりとして使える場合があるよ。時間や料金をコストにするなら、それに合う見積もりが必要。異なる単位の値を、そのまま足すわけではないんだ。
ひよこ ひよこ
いつでも最短経路が見つかって、速くなる?
ペンギン先生 ペンギン先生
条件次第だよ。非負の経路コストを前提に、残りの最小コストを過大評価しない見積もりが基本になる。調べ済みの地点を再探索しない方式では、隣接地点間でも見積もりが整合する「一貫性」が必要なんだ。良い見積もりで探索を減らせることはあるけれど、必ず高速になるとは限らないよ。
もっと詳しく知りたい人へ

ヒューリスティックの「一貫性」とは?

隣接する地点nとn′について、h(n)が移動コストc(n,n′)+h(n′)を超えず、ゴールのhが0になる条件です。移動に伴って残りの見積もりが不自然に大きく減ることを防ぎます。調べ済みの地点を再展開しないA*のグラフ探索で、最適性を保つために使われます。過大評価しないだけの見積もりと区別してください。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「A*アルゴリズム」って出てきたら「ここまでの費用とゴールまでの見積もりで経路を探す方法」と思えばだいたいOK!
📖 おまけ:英語の意味
「A* search」 = A*(エースター)探索
💬 A*の「*」はスターと読みます。経路探索では距離だけでなく、所要時間などをコストとして扱うこともできます。

参考資料

← 用語集にもどる