目標までのコストが予測できる 場合場合 探索の探索 · ヒューリスティック探索 目標までのコストh(n)を用いた探索 h; heuristicとは? 【発音】
08 人工知能4:知識を用いる探索法 (ヒューリスティック探索)
description
Transcript of 08 人工知能4:知識を用いる探索法 (ヒューリスティック探索)
08 人工知能4:知識を用いる探索法
(ヒューリスティック探索)
2008 May2
田中美栄子(知識 A )
ヒューリスティック
という概念を知る
これまでは知識を用いない探索( blind search )であった、、
• 対象とする事柄に対し多少とも知識を持っている場合、ヒューリスティック・サーチが可能
( Heuristic search :発見法的な探索)
• こういうときはこうするのがよい、という選択ができる、但し 100% 信頼は出来ない
• (うまく行くことが多い、または過去にうまく行ったことがある)
Heuristic :発見に役立つモノ(定義曖昧)
• 1957 Newell, Shaw, Simon の定義
「ある与えられた問題を解くかも知れないが、その可能性が保証されていないプロセス」
(つまり保証付きでない方策、といっている)
• 1961 : 問題解決の動作効率を改良するヒント
Heuristic :発見に役立つ知恵(定義曖昧)
1963 Feigenbaum と Feldman による定義:
「 rule of thum のことである」
親指で1インチを測る程度の大雑把で、巨大な探索空間を大幅に制限する為の戦略、仕掛け、単純化、等の方法
解を保証しないが、多くの場合に良い解を提供する
後になってそれが,最適解だった,と判ることもある
ロボットの迷路抜け• ( 1,1 )から( 4,4 )へ
(4,4)
(1,1)
(1,1)
(2,3)
(2,3)
(2,4)
(1,4)
(1,4) (2,4) (3,4)
(3,3)
(2,2)
(3,1)
(3,2)(3,4)
(4,4) (3,3)
(2,2)
2
4
(3,2)
(3,1)
知識を用いない探索( blind search )
• 解がどのあたりにあるかの見当がつかない場合、総当たり的に探す (Brute-force search)
• 深さ優先探索( Depth-first-search)
• 幅優先探索( Breadth-first-search)
• 最適探索( Optimal-search) 複数解のうち,最適解
Depth-1ST 深さ優先探索( graph )depth-first-search algorithm{1.初期節点を open リストに入れる2. if(open==empty)break; (探索失敗)3. n=first(open);4. i f (goal(n))print(n);break; (探索終了)5. remove(n,open); add(n,closed);6. 次に調べる節点を open に入れる (n を展開
し、全ての子節点 ni を open の先頭に入れる ) 。
ni から n へポインタを付けておく。7. 2へもどる}
Depth-1st : S→A→B→D→E→G
• OpenList
1) S
2) A
3) BC
4) DEC
5) EC
6) GFC
S(1,1)
A(2,3)
B(2,4)
D(1,4) E(3,4)
G(4,4) F(3,3)
C(2,2)
2
4
H(3,2)
I(3,1)
Breadth-1ST 幅優先探索( graph)breadth-first-search algorithm {1.初期節点を open リストに入れる2. if (open == empty) break; (探索失敗)3. n = first (open);4. i f (goal(n)) print(n); break; (探索終了)5. Remove (n, open); add (n, closed);6. 次に調べる節点を open に入れる (n を展開し
全ての子節点 ni を open の最後に入れる ) 。 ni から n へポインタを付けておく。7. 2へもどる}
Breadth-1st : S→A→B→C→D→E→H →I→ G• OpenList 1) S 2) A 3) BC 4) CDE 5) DEHI 6) EHI 7) HIGF 8) IGF 9) GF
S(1,1)
A(2,3)
B(2,4)
D(1,4) E(3,4)
G(4,4) F(3,3)
C(2,2)
2
4
H(3,2)
I(3,1)
Optimal-search 最適探索optimal-search algorithm {1.初期節点を open リストに入れる2. if (open == empty) break; (探索失敗)3. n = first(open);4. i f (goal(n)) print(n); break; (探索終了)5. remove(n,open); add(n,closed);6. 次に調べる節点を open に入れる (n を展開し、
全ての子節点 ni を open に入れ、コストの昇順に並べる )
ni から n へポインタを付けておく7. 2へもどる }
最適探索 optimal search
• 状態空間がグラフで表され• 状態遷移の枝に出発点からのコスト
g(n) が計算済み• この時、ステップ6で open の中身をコス
トの昇順に並べ、一番最初にコスト最小の節が来るようにする
• 解が複数ある場合など、最小コストの解を探せる
Optima l: S→B→E→A→F→G2
• OpenList
1) S (0) 2) B ( 1)A(4)
3) E(3)A(4)F(4)
4) A(4)F(4)G1(6)H (7) 5) F(4)C (5) G1(6)H(7)
6) G 2(5) C (5) G1(6)D(6)I(6)H(7)
S
A B
D
E
G1
F
C2
4
HI G
2
1
1 2 2
4
3
13
これまでは知識を用いない探索( blind search )であった、、
• 対象とする事柄に対し多少とも知識を持っている場合、ヒューリスティック・サーチが可能
( Heuristic search :発見法的な探索)
• こういうときはこうするのがよい、という選択ができる、但し 100% 信頼は出来ない(うまく行くことが多い、または過去にうまく行ったことがある)
探索の基本アルゴリズム• Search algorithm{• 1.初期節点を open リストに入れる• 2. if(open==empty)break; (探索失敗)• 3. n=first(open);• 4. i f (goal(n))print(n);break; (探索終了)• 5. remove(n,open);• 6. 次に調べる節点を open に入れる ( 順
序)• 7. 2へもどる}
Heuristic search (1)最良優先探索: best-first-search
各節点からゴールまでのコスト(距離) h(n) が予想出来るとき
全コストは f (n) = g(n)+h(n)
h(n) の正確な値がわからないとき、予測値 h’(n) で代用
• ステップ6で予想値 h’(n) の昇順に並べる
(次の例参照:出口までのx距離とy距離の和とする: → 駄目か
も知れない)
問題点
ヒューリスティック関数 h’ の推定が間違っていれば失敗
Heuristic :ヒントを多用して解を発見
例:迷路問題
ヒューリスティック関数 h’ :h’(n)= 状態 n から終点 G までの距離の推定値,と仮
定
h’(n) =| n x ー G x| + | ny ー Gy|
迷路の形次第で成功することも失敗することもあるゼッタイに正しいかどうか解らないが使えそうなヒ
ント
h = 点 n から目標地 G までの推測コスト
• S ( 1,1 )から G ( 4,4 )へ
(4,4)
(1,1)
S(1,1)
(2,3)
A(2,3)
B(2,4)
D(1,4)
(1,4) (2,4) (3,4)
(3,3)
(2,2)
(3,1)
(3,2)E(3,4)
G(4,4) F(3,3 )
C(2,2)
2
4
H(3,2) I(3,1)
h =|n の x 座標 -G の x 座標 |+| n の y 座標 -Gの y 座標 |
• S ( 1,1 )から G ( 4,4 )へ
(4,4)
(1,1)
S(1,1)6
(2,3)
A(2,3)3
B(2,4)2
D(1,4)3
(1,4) (2,4) (3,4)
(3,3)
(2,2)
(3,1)
(3,2)E(3,4)1
G(4,4)0 F(3,3 )
C(2,2)4
2
4
H(3,2)
I(3,1)
A*- アルゴリズムA*-search algorithm{
1.初期節点を open リストに入れる2. if(open==empty)break; (探索失敗)3. n=first(open);
4. i f (goal(n))print(n);break; (探索終了)5. remove(n,open); add(n,closed);
6. 次に調べる節点を open に入れる (n を展開し、全ての子節点 ni を open に入れ、推定コスト f(ni)の昇順に並べる )
ni から n へポインタを付けておく
7. 2へもどる}
A*- アルゴリズムと A- アルゴリズム
推定コスト f(ni)=g’(ni)+h’(ni)
A* の条件 推定値 h’(ni) <= 本当の値 h(ni)
(この条件が成立しなければ A-search となる. A-Search ならば 解は保証されない )
g’(ni) は g(ni) の推定値だが、出発点から ni までの、解っているコストの内で最小のもの。
A*-algorithm : S→A→B→E→G
• OpenList
1) S (6) 2) A (6) 3) B (6) C (8) 4) E (6) D (8) C (8) 5) G(0)D(8)C(8)
S(1,1) 6
A(2,3)3
B(2,4)2
D(1,4)3
E(3,4)1
G(4,4)0
F(3,3)
C(2,2) 4
2
4
H(3,2)
I(3,1)
3
1 1
h = 点 n から目標地 G までの推測コスト
• S ( 1,1 )から G ( 4,4 )へ
(4,4)
(1,1)
S(1,1)
A(2,3)
B(2,4)
D(1,4)
(2,4) (3,4)
(3,3)
(2,2)
(3,1)
(3,2)E(3,4)
G(4,4) F(3,3 )
C(2,2)
2
4
H(3,2) I(3,1)
(2,3)(1,3)