A* の探索効率は h の正確さに左右される。
もしも h がまったくでたらめな値を返すならば、探索はゴールとはあさっての方向に進んでしまい、現実的な時間内(一時間、一週間、一年)では解を発見できない場合がある。しかし、いくらおかしな方向に探索が進んだとしても、いつかは必ず解を発見できる保証がある(完全性)。
一方、h が常に正しい値 h* を返す場合、計算機は「迷うこと無く=分岐をすること無く」グラフ上の最短経路を発見することができる。そのような h のことを、パーフェクト・ヒューリスティクスとよぶ[4]。
現実に用いられる有用な h は、これらの中間の位置にある。
歴史
A* アルゴリズムは1968年に Peter E. Hart、Nils J. Nilsson、Bertram Raphael の三人が発表した論文[5]の中で最初に記述された。A* というこの一風変わった名前は、この論文でスタートからゴールまでの最短経路を確実に見つけるアルゴリズムを許容的(英: admissible)と呼び、論文の数式中に 許容的なアルゴリズムの集合を A と表し、そのAの中でも評価回数が最適になる物を A* と表記していたためである[6]。
A*の考え方
スタートノードから、あるノード n を通って、ゴールノードまでたどり着くときの最短経路を考える。このときこの最短経路のコストを f* (n) とおくと、
f* (n)= g* (n) + h* (n)
と置くことが出来る。ここで g* (n) はスタートノードから n までの最小コスト、h* (n) は n からゴールノードまでの最小コストである。もし g* (n) の値と h* (n)の値を知っていれば、全体の最短経路 f* (n) は容易に求まる。しかしながら実際には g* (n) と h* (n) をあらかじめ与えることは出来ない。そこで f* (n) を次のような推定値 f (n) に置き換えることを考える。
ここで g(n) はスタートノードから n までの最小コストの推定値、h(n) は n からゴールノードまでの最小コストの推定値である。この場合 g に関しては探索の過程で更新を加えることにより g* に近づけてゆくことができるが、h* は、実際にゴールに辿り着くまでは誰にもわからない。そこで、h(n) には人間が(ある程度妥当性を持つように)設計した推定値を与えることにする。このアルゴリズムを A*探索アルゴリズムといい、h (n) をヒューリスティック関数という。
OPEN/CLOSEリストに登録されているノードの数が多い場合、ノードの展開ごとに子ノード m をOPENから CLOSE へ移動(あるいは逆)するのは非常に高価な操作である。
たとえば、OPEN/CLOSEリストが2分探索木(赤黒木など)で実装されている場合、まずノードの探すのに かかり(ノードのIDで検索)、また削除にも かかる。配列の場合には削除により大きなコストがかかる。
分割統治法のように、部分問題に分割したうえで全体問題を解いた方が効率的な問題もある。A* 同様の通常の状態遷移はどれかがゴールに到達すれば良いので OR と呼び、部分問題に分割する場合は全ての部分問題が解けないといけないので AND と呼ぶと、探索木が AND/OR 木になる。AND で状態を分割する際、ゴールも分割する必要がある。
^Pearl, Judea (1984) (English). "Heuristics intelligent search strategies for computer problem solving". Addison-Wesley. ISBN0201055945
^ abHoffmann, Jörg, and Bernhard Nebel. "The FF planning system: Fast plan generation through heuristic search." Journal of Artificial Intelligence Research (2001): 253-302.
^Helmert, Malte, and Carmel Domshlak. "Landmarks, critical paths and abstractions: what's the difference anyway?." ICAPS. 2009.
^How Good is Almost Perfect?. M Helmert, G Röger - AAAI, 2008
^Russel, Norvig, Artificial intelligence: a modern approach
^Robert C. Holte. Common Misconceptions Concerning Heuristic Search, SoCS 2010
^Nils J. Nilsson (August 1968). “Searching problem-solving and game-playing trees for minimal cost solutions”. Information Processing 68 : proceedings of IFIP Congress 1968 (Amsterdam : North-Holland) 2: 1556-1562.