「ヒューリスティック探索入門」のメモ
「ヒューリスティック探索入門」というPDFの1章、2章、4章の一部の学習メモです。
特に、「状態空間問題」といった問題設定や用語について認識できたこと、A*法の理論などについてとても勉強になりました。
(PDF) https://jinnaiyuu.github.io/pdf/textbook.pdf
(Github) https://github.com/jinnaiyuu/search-ja
できる限り元のテキストに沿っているつもりで、私の意見や考えは青字としています。誤りなどありましたら教えて下さい。
1章 イントロダクション
このPDFの主な対象は、状態空間問題
(state-space problem)。
特に、状態空間問題のうち完全情報
かつ決定論的
モデル
状態空間問題
とは、与えられたゴールに到達するための行動の列(=プラン) を発見する問題完全情報
とは、エージェントが世界の状態を全て観察できるモデル
不完全情報
とは、エージェントは世界の状態を知ることはできないが、観察して世界の状態の一部を知ることができるモデル決定論的
とは、エージェントの行動によって世界の状態がどのように遷移するかが一意に定まること
非決定論的
とは、一意に定まらないこと
(行動に応じて状態の候補のいずれかに確率的に遷移する場合や、別のエージェントがいてその意思決定が状態遷移に影響を与える場合など)
参考文献
Judea Pearl の Heuristic
https://www.amazon.com/exec/obidos/ASIN/0201055945/acmorg-20
Stefan Edelkamp and Stefan Schrodl の Heuristic Search Theory and Application
https://www.amazon.co.jp/dp/B0058NBJCW
Stuart Russell and Peter Norvig の Artificial Intelligence
https://www.amazon.co.jp/dp/B01HEY2P66
Malik Ghallab, Dana Nau, and Paolo TraversoのAutomated Planning and Acting https://www.amazon.co.jp/dp/B01JGMDWRA/
2章 状態空間問題
状態空間問題
状態空間問題
とは、以下の問題である。
以下が与えられ、
状態
の集合初期状態
ゴール状態
の集合アクション
の集合。アクション
は、ある状態を別の状態に変換するものコスト関数
。コスト関数
は、アクションごとのコストを表す関数で、コストは実数。
(なお、コスト関数が定数である場合の問題は、ユニットコスト状態空間問題という。)
以下を解として返す。
- 初期状態からゴール状態へ遷移させるアクションの配列
ここで、アクションの配列のコストは、各アクションのコストの和である
なお、状態空間問題は、グラフの形で考えることができる。(というか、解くにあたってはグラフで考えるしかないような気がする)
状態空間グラフ
(=状態空間問題を表すグラフ)は、各状態を頂点、アクションを辺、コスト関数を辺の重みとしたもの- 状態空間グラフにおいて、アクションの配列は経路、アクションの配列のコストは経路の辺の重みの和となる。
- 探索する際に、状態空間グラフのノード・エッジ全てを保持する必要はなく、またメモリなどの制約から全てを保持できない場合もある。全てのノード・エッジを保持している場合を
明示的状態空間グラフ
、ルールなどの関数で表す場合を非明示的状態空間グラフ
という
状態空間問題の問題例
- グリッド経路探索
Web上のデモ:http://qiao.github.io/PathFinding.js/visual/ - スライディングタイル
15パズルなど - 多重整列問題
- 倉庫番
- 巡回セールスパーソン問題
問題の性質・難しさ
問題の難しさを左右する要素は以下のとおり:
- 状態空間の大きさ
- 分枝度
- デッドエンド
- 解の存在
関連する問題
以下のような関連する問題がある:
マルコフ過程問題
(Markov Decision Process Problem) (MDP)部分観測マルコフ過程問題
(partially observable Markov decision process problem) (POMDP)- MDPからさらに不完全情報問題に拡張したもの
- 多くの場合厳密計算は困難なので、モンテカルロ木探索などの近似手法が用いられる
敵対するエージェントがいる問題
4章 ヒューリスティック探索
ヒューリスティック関数とその性質
ヒューリスティック関数
(h値
)完璧なヒューリスティック
許容的なヒューリスティック
- すべてのノードについて、h値が正しい最短コストh*以下である場合、許容的であるという
- 緩和問題を解くことで許容的なヒューリスティックが得られる。 緩和問題とは、元の問題の解を含む問題をいう。( 例えば、元の問題では存在しない辺を加えたものなど)
無矛盾なヒューリスティック
- 全てのノードのペアについて、$h(u) <= h(v) + k(u, v) $ が成り立つ場合、無矛盾なヒューリスティックという
ここで、$k$は$u$から$v$への最小コスト - つまり、出発するノード$u$のh値から経路$u \rightarrow v$のコストを引いたものより、到達するノード$v$のh値が同じか大きい場合無矛盾
- 逆に、出発するノード$u$のh値から経路$u \rightarrow v$のコストを引いたものより、到達するノード$v$のh値が小さい場合、経路を進むとh値が消えてしまい矛盾しているような感じか
- ゴールノードのh値が0である無矛盾なヒューリスティックは許容的なヒューリスティックである。(PDF内の定理2)
- 全てのノードのペアについて、$h(u) <= h(v) + k(u, v) $ が成り立つ場合、無矛盾なヒューリスティックという
単調なヒューリスティック
A*法
A*法のアルゴリズムは以下のとおり:
g値
は、初期状態からそのノードまでの既知の最短経路コストh値
は、何らかのヒューリスティック関数によるそのノードからゴール状態までの最短経路の見積もりf値
は、g値
とh値
の和A*法
は、f値
が小さいノードから順に探索していくアルゴリズム
A*法には以下のような性質がある:
- グラフに経路コストが0以下のサイクルが存在しない場合、A*は完全である(PDF内の定理4)
完全とは、解が存在するときに有限時間内に解を返すこと - ヒューリスティックが許容的であるとき、A*は最適解を返す(PDF内の定理5)
無矛盾なヒューリスティックを用いたA*探索はノードの再展開を生じない(PDF内の定理6)
許容的で無矛盾なヒューリスティックであるなら、解析的に良い性質を満たしているといえるが、経験的に速いと知られているヒューリスティック関数の中にはこれらの性質を満たしていないものも多い
A*法とヒューリスティックの情報
- ヒューリスティックの情報
ヒューリスティック関数h1とh2が両方許容的であり、ゴールでない$s \in S$ に対してh2(s) > h1(s)であるとき、h2(s)はh1(s)よりも情報があるという - ノード展開の必要条件(PDF内の定理7)
A*探索で展開されるノードのf値はすべて最適解のコスト以下である - ノード展開の十分条件(PDF内の定理8)
f値が最適解のコスト未満であるノードは全てA*展開で探索される - h1とh2の探索範囲(PDF内の定理9)
h2はh1よりも情報がある場合、h2を使ったA*探索で展開されるノードはh1を使ったA* 探索でも展開される。つまり、h2の探索範囲はh1よりも小さくなる。 - ヒューリスティックの合成(PDF内の定理10)
ヒューリスティック関数の例
- グリッド探索での、障害物を無視した最短距離(マンハッタン距離)
- スライディングタイルでの、現在の位置とゴール状態の位置の差の総和
- スライディングタイルでの、部分問題の最適解のコスト
- 巡回セールスパーソン問題での、最小全域木のコスト
非最適解の探索
最適解でなくて良いので、解を探索する方法には以下がある: