A*
A*(A-star、エースター)
概要
A* アルゴリズムは、「グラフ
A* アルゴリズムは、ダイクストラ
A* の
歴史
A* アルゴリズムは1968
A*の考 え方
スタートノードから、あるノード n を
- f* (n)= g* (n) + h* (n)
と
ここで g(n) はスタートノードから n までの
アルゴリズムの流 れ
A* のアルゴリズムの
- スタートノード( )を
作成 する。また計算 中 のノードを格納 しておくための優先 度 付 きキュー OPENリストと、計算 済 みのノードを格納 しておくCLOSEリストを用意 する。(名前 は「リスト」だが、これらの実際 のデータ構造 は必 ずしも連結 リストである必要 はない。) - ゴールは
必 ずしも1 つである必要 はないので、ゴール条件 を満 たすノード集合 を と呼 ぶことにする。 - スタートノードを Openリストに
追加 する、このとき = であり = となる。また Closeリストは空 にする。 - Openリストが
空 なら探索 は失敗 とする(スタートからゴールにたどり着 くような経路 が存在 しなかったことになる)。 - Openリストに
格納 されているノードの内 、最小 の を持 つノード を1つ取 り出 す。同 じ を持 つノードが複数 ある場合 、タイブレーク手法 によりどれかのノードを選択 する。 - であるなら
探索 を終了 する。それ以外 の場合 は を Close リストに移 す。 - に
隣接 している全 てのノード(ここでは隣接 ノードを とおく)に対 して以下 の操作 を行 う- を
計算 する、ここで はノード n から m へ移動 するときのコストである。また は で求 めることができる。 - m の
状態 に応 じて以下 の操作 を行 う- m が Openリストにも Closeリストにも
含 まれていない場合 とし m を Openリストに追加 する。このとき m の親 を n として記録 する。 - m が Openリストにある
場合 、 であるなら、m を Open から削除 し、 に置 き換 え、再 び Open に挿入 する(Open が正 しくソートされていることを保証 するため)。また、記録 してある m の親 を n に置 き換 える。 - m が Closeリストにある
場合 、 であるなら として m を Openリストに移動 する。また記録 してある m の親 を n に置 き換 える。
- m が Openリストにも Closeリストにも
- を
- 3
以降 を繰 り返 す。 探索 終了 後 、発見 されたゴール から親 を順次 たどっていくと S から ゴール までの最短 経路 が得 られる。
実際 に使 われているOPEN/CLOSEリストの実装
OPEN/CLOSEリストに
しかし、データ
- それぞれのノードに、ノードの
状態 として OPEN, CLOSE の2種類 のタグをもたせる。全 てのノードは始 めOPENである。 - ノードに
一意 な整数 ID をもたせる。 - また、ID からノードを で
参照 できるハッシュテーブルを用意 する。 - OPEN にノードを
追加 する際 には、m が Openリストに含 まれているかは検証 せず、重複 を許 して追加 する。かつ、このときノードではなく ID のみを追加 する。- ID は
整数 1つ分 なので、重複 のオーバーヘッドを最小 化 出来 る。
- ID は
- OPEN からノードを pop する
際 、pop したノードの状態 が OPEN であれば展開 を行 うが、CLOSE であれば単 にスキップする。 - CLOSEリストは
使用 しない。 - f
値 による優先 度 付 きキューは、辺 のコストが1である場合 には単 にf値 ごとの可変 配列 にしたほうが高速 な操作 が可能 である。辺 のコストに大幅 なばらつきがある場合 には、ヒープとして実装 したほうがよい。
性質
A* の
- A* はダイクストラの
一般 化 であり、ダイクストラと同様 、グラフに負 のコストの辺 があれば完全 性 を失 う。その場合 にはベルマン–フォード法 を用 いる。 - h(n) は
常 に非負 でなくてはならない。 - あるヒューリスティクス h(n) が
全 てのノード n について真 のゴール距離 h*(n) を上回 らない場合 、h は Admissible/許容 的 であると言 う。
このとき、A*の
- あるヒューリスティクス h(n) について、
全 てのノード n と、それに隣接 しているノード m について である場合 、その h はconsistent/無矛盾 であるという。 - consistent な h は、
常 に admissible である[9]。 - ある2つのヒューリスティック
関数 h1, h2 について、 が成 り立 つ時 、 h2 は h1 を支配 する (dominate) とよぶ。このとき、特 に両者 が許容 的 な場合 、h2 を用 いた探索 はより効率 的 だろうと考 えられている。しかし、いくつかのコーナーケースではこのことは成 りたない[10]。
このアルゴリズムはCPUの
部分 問題 に分割 する場合
関連 項目
参照
- ^ Pearl, Judea (1984) (English). "Heuristics intelligent search strategies for computer problem solving". Addison-Wesley. ISBN 0201055945
- ^ a b Hoffmann, 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
- ^ Peter E. Hart; Nils J. Nilsson; Bertram Raphael (July 1968). “A Formal Basis for the Heuristic Determination of Minimal Cost Paths”. IEEE Transactions on Systems Science and Cybernetics 4 (2): 100-107. doi:10.1109/TSSC.1968.300136. ISSN 0536-1567 .
- ^ a b Nils J. Nilsson
著 、白井 良明 ,辻井 潤一 ,佐藤 泰介 訳 『人工 知能 の原理 』日本 コンピュータ協会 、1983年 1月 15日 (原著 1980年 )。ISBN 4-88917-026-X。 - ^ Kishimoto, Akihiro, Alex S. Fukunaga, and Adi Botea. "Scalable, Parallel Best-First Search for Optimal Sequential Planning." ICAPS. 2009.
- ^ Burns, E. A., Hatem, M., Leighton, M. J., & Ruml, W. (2012, July). Implementing fast heuristic search code. In Fifth Annual Symposium on Combinatorial Search. https://www.aaai.org/ocs/index.php/SOCS/SOCS12/paper/view/5404/5173
- ^ 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.
- ^ Giorgio Levi; Franco Sirovich (January 1976). “Generalized and/or graphs”. Artificial Intelligence 7 (3): 243-259. doi:10.1016/0004-3702(76)90006-0 .
- ^ Vipin Kumar; Dana S. Nau; Laveen N. Kanal (August 1985). A General Paradigm for AND/OR Graph and Game Tree Search .
- ^ Patrick A. V. Hall (July 1973). “Equivalence between AND/OR graphs and context-free grammars”. Communications of the ACM 16 (7): 444-445. doi:10.1145/362280.362302 .