- 再び状態空間探索
- 定義
given 状態集合S
初期状態 s0 ∈ S
状態に関する述語 P: S → {T,F}
基本操作の集合 O = {oi | oi(s) = f, s, f ∈ S}
find P(ojn(・・・(oj1(s0))・・・)) = T を満足する
系列 [ojn, ...., oj1]
(但し,oji ∈ O)
|
- その他の重要な概念
経路[ni, ...,nj]: ノー
ドniが表す状態からはじめて,適当な操作の適用によりノード
njが表す状態に到達出来ることを意味する.経路中のノード数 m
とした場合,m-1 を経路の長さと言う.
操作コストc(o): 操作oのコスト(整数もしくは
実数)を求める関数.
経路コストC(p): 経路 p のコストを求める関数.
経路 p (=[ni, ...,ni+k] を実現する操作列を
[o1,o2, ... ,ok]とした場合,
C(p) は以下のように定義される.
k
C(p) = Σc(oi)
i = 1
- 経路コスト最小
- 多くの探索問題では,経路コストが最小の解(操作系列)を見つけることが
必要.
例えば,8/15パズルでは動かすタイルの数が最小となる系列.これはどのよう
にすれば見つかるのか?
- 経路コストは実際の操作系列を与えなければ計算が出来ない.
- では,全ての可能な操作系列に対して経路コストを計算しなければ,
経路コスト最小の解は見つからないのか?
- 探索途中のノードniのコスト
- 探索過程において発見されたノードniについて,初期ノード
からそのノードniを経由して目標ノードに至る経路のコストを,
ノードniのコストとよび,f(ni)で表記する.
このとき,f(niは以下のように表現できる.
f(ni) = g(ni) + h(ni)
と書くことが出来る.ただし,g(ni)は初期ノードn0か
らniまでの経路の最小コスト,h(ni)はni
から目標ノードまでの最小コスト.
- ヒューリスティック関数
- h(ni)の値を厳密に求める代わりに,niがどのく
らい目標状態ノードに近いか(どのくらい好ましいか)を数値化して表現したい.
別に言い方をすれば,ノードnの状態からゴール状態ま
での最短経路の見積もりコストを求めたい.
この数値化する手法は,個々の問題に依存し,かつ発見的な知識を必要とし,
よって定式化は難しく,多くの場合経験的な数値である.
- このような知識をヒューリスティクス
(heuristics: 発見的知識)と呼び,それにもとづき前述の
h(ni)の近似値を与えてくれる関数h'(ni)をヒューリスティック関数と呼ぶ.ただし,h'の値は非負でなければならない.
ルーマニアの地図の例
- また,ヒューリスティック関数を用いた探索戦略を発見的探索(heuristic search),もしくは知識を用いた探索(informed search)と呼ぶ.
- ヒューリスティック関数が目標までの実際のコストを決して超えない値を返す場合,それは楽観的,もしくは許容的(admissible)ヒューリスティ
クスという(A*探索で重要となる概念).