状態空間と探索木 基本的な探索アルゴリズム 横形探索と縦形探索...
Post on 21-Jan-2016
236 Views
Preview:
DESCRIPTION
TRANSCRIPT
©2008 Ikuo Tahara
探索探索 状態空間と探索木 基本的な探索アルゴリズム
横形探索と縦形探索 評価関数を利用した探索アルゴリズム
分岐限定法 山登り法 最良優先探索 A ( A* )アルゴリズム
©2008 Ikuo Tahara
状態空間の探索状態空間の探索 問題
規則 前提条件 追加リスト
#1 S A
#2 S B
#3 A B
#4 A G
#5 B C
#6 C A
#7 C D
#8 C G
A B
C
G
S
D
#1 #2
#3
#4#6
#8
#5
#7
状態空間
©2008 Ikuo Tahara
状態空間の探索状態空間の探索 状態空間
A B
C
G
S
D
#1 #2
#3
#4#6
#8
#5
#7
初期状態
目標状態
S
A B
C
D G
B G C
A D G
G
探索木探索木
©2008 Ikuo Tahara
探索における基本的処理探索における基本的処理 局所的情報→大局的な情報
節点の選択: 展開すべき節点を選択する.
節点の展開: 子節点をすべて求める. ※循環路を作らない.
©2008 Ikuo Tahara
主な探索技法主な探索技法 基本的な探索法
横形(幅優先)探索( Breadth-first search ) 縦形(深さ優先)探索( depth-first search )
評価関数を利用した探索法 分岐限定法( Branch and bound search ) 山登り法( Hill-climbing search ) 最良優先探索( Best-first search ) A ( A* )アルゴリズム( Algorithm A star )
©2008 Ikuo Tahara
横形探索と縦形探索横形探索と縦形探索 節点の選択の制御
S
S
展開すべき節点のリスト
次に展開する節点
©2008 Ikuo Tahara
横形探索と縦形探索横形探索と縦形探索 節点の選択の制御
S
A B C
展開すべき節点のリスト
S
©2008 Ikuo Tahara
横形探索と縦形探索横形探索と縦形探索 節点の選択の制御
S
A B C
展開すべき節点のリス展開すべき節点のリストト
A B S
©2008 Ikuo Tahara
横形探索と縦形探索横形探索と縦形探索 節点の選択の制御
S
A B C
展開すべき節点のリスト
A B C
次に展開する節点
©2008 Ikuo Tahara
横形探索と縦形探索 節点の選択の制御
S
A B C
D E
展開すべき節点のリスト
A B C
©2008 Ikuo Tahara
横形探索と縦形探索 節点の選択の制御
S
A B C
D E
展開すべき節点のリスト
A B C
横形(幅優先)探索
(待ち行列)
©2008 Ikuo Tahara
横形探索と縦形探索横形探索と縦形探索 節点の選択の制御
S
A B C
D E
展開すべき節点のリスト
A B C
縦形(深さ優先)探索
(スタック)
©2008 Ikuo Tahara
横形探索横形探索
SS
AA BB CC DD
EE FF HH II
GG
SS
OPEN : (S)CLOSED: [ ]
©2008 Ikuo Tahara
横形探索横形探索
SS
AA BB CC DD
EE FF HH II
GG
SS
AA BB
OPEN : (A B)CLOSED: [S]
©2008 Ikuo Tahara
横形探索横形探索
SS
AA BB CC DD
EE FF HH II
GG
SS
AA BB
FF
OPEN : (B F)CLOSED: [S A]
©2008 Ikuo Tahara
横形探索横形探索
SS
AA BB CC DD
EE FF HH II
GG
SS
AA BB
CCFF
OPEN : (F C H)CLOSED: [S A B]
HH
©2008 Ikuo Tahara
横形探索横形探索
SS
AA BB CC DD
EE FF HH II
GG
SS
AA BB
CC
EE
FF
OPEN : (C H E)CLOSED: [S A B F]
HH
©2008 Ikuo Tahara
横形探索横形探索
SS
AA BB CC DD
EE FF HH II
GG
SS
AA BB
CC
DDEE
FF
II
OPEN : (H E D I)CLOSED: [S A B F C]
HH
©2008 Ikuo Tahara
横形探索横形探索
SS
AA BB CC DD
EE FF HH II
GG
SS
AA BB
CC
DDEE
FF HH
II GG
OPEN : (E D I G)CLOSED: [S A B F C H]
©2008 Ikuo Tahara
縦形探索縦形探索
SS
AA BB CC DD
EE FF HH II
GG
OPEN : (S)CLOSED: [ ]
SS
©2008 Ikuo Tahara
縦形探索縦形探索
SS
AA BB CC DD
EE FF HH II
GG
OPEN : (A B)CLOSED: [S]
SS
AA BB
©2008 Ikuo Tahara
縦形探索縦形探索
SS
AA BB CC DD
EE FF HH II
GG
OPEN : (F B)CLOSED: [S A]
SS
AA BB
FF
©2008 Ikuo Tahara
縦形探索縦形探索
SS
AA BB CC DD
EE FF HH II
GG
OPEN : (E H B)CLOSED: [S A F]
SS
AA BB
EE
FF
HH
©2008 Ikuo Tahara
縦形探索縦形探索
SS
AA BB CC DD
EE FF HH II
GG
OPEN : (H B)CLOSED: [S A F E]
SS
AA BB
EE
FF
HH
©2008 Ikuo Tahara
縦形探索縦形探索
SS
AA BB CC DD
EE FF HH II
GG
OPEN : (G I B)CLOSED: [S A F E H]
SS
AA BB
EE
FF
HH
IIGG
©2008 Ikuo Tahara
横形探索と縦形探索の比較横形探索と縦形探索の比較 探索木
各節点の分岐数: 深さ の節点を生成しようとしていると
き
bd
3 b の場合 0d
3d
1d
2d
©2008 Ikuo Tahara
(1)(1) OPENOPEN リストのメモリリストのメモリ量量 横形探索
OPEN リスト内の節点数は少なくとも
OPEN リストとして保持している
1db
( )dO b ( の指数オー( の指数オーダー)ダー)
d
©2008 Ikuo Tahara
(1)(1) OPENOPEN リストのメモリリストのメモリ量量 縦形探索
OPEN リスト内の節点数は少なくとも
OPEN リストとして保持している
( 1)( 2)
( 1)( 1) 1
b d b
b d
( )O db ( の線形オー( の線形オーダー)ダー)
d
©2008 Ikuo Tahara
(2)計算量(2)計算量 探索する節点数
縦形でも横形でも最悪の場合
1
dn
n
b
( )dO b ( ( の指数オーダー))
d
©2008 Ikuo Tahara
縦形探索の特徴縦形探索の特徴 縦形探索
メモリ量に関しては効率がよい. 再帰呼び出しによる実現が容易である.
問題点 目標状態が探索木の右上にくるような場合
は横形と比して非常に効率が悪い. 特に,目標状態が有限な深さに存在するに
もかかわらず深さが無限な探索木に対して探索が終了しない場合がある.
©2008 Ikuo Tahara
再帰呼出しによる縦形探索再帰呼出しによる縦形探索
Procedure S(n,R)
1. if n=G then flag:=T, print(R), exit.
2. c:=children(n).
3. if c= then flag:=F, exit.
4. n’:=top(c), c:=c-{n’}.
5. if n’R then goto 3.
6. R’:=R+{n’}.
7. S(n’,R’).
8. if flag=F then goto 3 else exit.
©2008 Ikuo Tahara
評価関数の導入評価関数の導入 最適順路のコスト:
節点 n の評価
( , )c a b
( , )c a b
( ) ( , )g n c S n ( ) ( , )h n c n G
( ) ( ) ( )f n g n h n
a b
S n G
©2008 Ikuo Tahara
評価関数の導入評価関数の導入 の推定値:
:その探索時点で最適な順路の評価値
:ヒューリスティック関数
( )f n ˆ ˆˆ( ) ( ) ( )f n g n h n
ˆ ( )g n
ˆ ( ) ( )g n g n
ˆ( )h n
©2008 Ikuo Tahara
評価関数を利用した探索法評価関数を利用した探索法 分岐限定法( Branch and bound
search )
山登り法( Hill-climbing search )
最良優先探索( Best-first search ) A ( A* )アルゴリズム( A star
algorithm )
ˆ ˆ( ) ( )f n g n
ˆ ˆ( ) ( )f n h n
ˆ ˆˆ( ) ( ) ( )f n g n h n
©2008 Ikuo Tahara
コストの導入コストの導入
SS
AA BB CC DD
EE FF HH II
GG
1
1
1
1
3
3
5
5
2246
6
6
7
7 2
©2008 Ikuo Tahara
分岐限定法分岐限定法 OPEN リストから 値が最小の節点を選び展開す
る.
nm
S
OPEN, CLOSEDmˆ ˆ( ) : ( / )g m g m nOPENm
ˆ ˆ ˆ ˆ( / ) ( ) ( ) : ( / )g m n g m g m g m n ˆ ˆ( / ) ( )g m n g m
CLOSEDmm への最適順路は発見済み → 無視
無視
ˆ ˆ( / ) ( ) ( , )g m n g n c n m
ˆ ( )g m
g
©2008 Ikuo Tahara
分岐限定法分岐限定法
SSSS
OPEN : (S(0))CLOSED: [ ]
SS
AA BB CC DD
EE FF HH II
GG
1
1
1
1
3
36 6
77
2
2
6 5
4
5
2
0
©2008 Ikuo Tahara
分岐限定法分岐限定法
SS
AA BB CC DD
EE FF HH II
GG
SS
OPEN : (A(1) B(3))CLOSED: [S]
AA BB1
1
1
1
3
36 6
77
2
2
6 5
4
5
2
1 3
©2008 Ikuo Tahara
分岐限定法分岐限定法
SS
AA BB CC DD
EE FF HH II
GG
SS
OPEN : (B(2) F(7))CLOSED: [S A]
AA BB
BB FF
1
1
1
1
3
36 6
77
2
2
6 5
4
5
2
3
2 7
©2008 Ikuo Tahara
分岐限定法分岐限定法
SS
AA BB CC DD
EE FF HH II
GG
SS
OPEN : (H(5) F(7) C(8))CLOSED: [S A B]
AA
BB FF
CC HH
1
1
1
1
3
36 6
77
2
2
6 5
4
5
2
7
58
8
©2008 Ikuo Tahara
分岐限定法分岐限定法
SS
AA BB CC DD
EE FF HH II
GG
SS
OPEN : (I(6) F(7) C(8) G(12))CLOSED: [S A B H]
AA
BB FF
CC HH
GG II
1
1
1
1
3
36 6
77
2
2
6 5
4
5
2
7
8
12 6
©2008 Ikuo Tahara
分岐限定法分岐限定法
SS
AA BB CC DD
EE FF HH II
GG
SS
OPEN : (F(7) C(8) G(11))CLOSED: [S A B H I]
AA
BB FF
CC HH
GG II
GG
1
1
1
1
3
36 6
77
2
2
6 5
4
5
2
7
8
12
11
©2008 Ikuo Tahara
分岐限定法分岐限定法
SS
AA BB CC DD
EE FF HH II
GG
SS
OPEN : (C(8) G(11) E(14))CLOSED: [S A B H I F]
AA
BB FF
CC HH
II
GG
1
1
1
1
3
36 6
77
2
2
6 5
4
5
2
8
11
EE 149
©2008 Ikuo Tahara
分岐限定法分岐限定法
SS
AA BB CC DD
EE FF HH II
GG
SS
OPEN : (G(11) D(13) E(14))CLOSED: [S A B H I F C]
AA
BB FF
CC HH
II
GG
1
1
1
1
3
36 6
77
2
2
6 5
4
5
2
11
EE 14
DD13
10
12
最適順路!
©2008 Ikuo Tahara
ヒューリスティック値の導入
SS
AA BB CC DD
EE FF HH II
GG
1
1
1
1
3
3
5
5
2246
6
6
7
7 2
7 4 6 4
2 3 4 2
©2008 Ikuo Tahara
山登り法山登り法 展開して得られた子節点にのみに着目し, 値の
最小の節点を選択する.SS
AA BB
CC HH
EE HH
AA
BB FF
FF
SS
AA BB CC DD
EE FF HH II
GG
④⑦ ⑥ ④
② ③ ④ ②
⑦ ④
⑥ ③ ④
② ④
⑦
④ ③・・循環路に陥る・局所解に陥る
h
©2008 Ikuo Tahara
最良優先探索最良優先探索 OPEN リストのすべての節点に着目し, 値の最
小の節点を選択する.
SSSS
AA BB CC DD
EE FF HH II
GG
④⑦ ⑥ ④
② ③ ④ ②
OPEN : (S)CLOSED: [ ]
h
©2008 Ikuo Tahara
最良優先探索最良優先探索 OPEN リストのすべての節点に着目し, 値の最
小の節点を選択する.
SS
AA BB
SS
AA BB CC DD
EE FF HH II
GG
④⑦ ⑥ ④
② ③ ④ ②
⑦ ④
OPEN : (B(4) A(7))CLOSED: [S]
h
©2008 Ikuo Tahara
最良優先探索最良優先探索 OPEN リストのすべての節点に着目し, 値の最
小の節点を選択する.
SS
AA BB
CC HHFF
SS
AA BB CC DD
EE FF HH II
GG
④⑦ ⑥ ④
② ③ ④ ②
⑦
⑥ ③ ④
OPEN : (F(3) H(4) C(6) A(7))CLOSED: [S B]
h
©2008 Ikuo Tahara
最良優先探索最良優先探索 OPEN リストのすべての節点に着目し, 値の最
小の節点を選択する.
SS
AA BB
CC HH
EE
FF
SS
AA BB CC DD
EE FF HH II
GG
④⑦ ⑥ ④
② ③ ④ ②
⑦
⑥ ④
②
OPEN : (E(2) H(4) C(6) A(7))CLOSED: [S B F]
h
©2008 Ikuo Tahara
最良優先探索最良優先探索 OPEN リストのすべての節点に着目し, 値の最
小の節点を選択する.
SS
AA BB
CC HH
EE
FF
SS
AA BB CC DD
EE FF HH II
GG
④⑦ ⑥ ④
② ③ ④ ②
⑦
⑥ ④
OPEN : (H(4) C(6) A(7))CLOSED: [S B F E]
h
©2008 Ikuo Tahara
最良優先探索最良優先探索 OPEN リストのすべての節点に着目し, 値の最
小の節点を選択する.
SS
AA BB
CC HH
EE
FF
SS
AA BB CC DD
EE FF HH II
GG
④⑦ ⑥ ④
② ③ ④ ②
⑦
⑥
GG II ②OPEN : (G(0) I(2) C(6) A(7))CLOSED: [S B F E H]
h
©2008 Ikuo Tahara
最良優先探索最良優先探索 有限グラフの場合,必ず成功する. 無限グラフの場合,探索が終了しないことがある.
( ) ( 1)
( ) ( )
( ) ( )
(5).
F x F x
F x G x
G x H x
H
(5)F
(4)F (5)G
(4)G (5)H
①
②
②
無限ループ
(5) ?F
(3)F①証明に要するコストの予測値
( ) :
( ), ( ) :
①②
F x
G x H x
©2008 Ikuo Tahara
AA (( A*A* )アルゴリズム)アルゴリズム 評価関数 を用いる. OPEN リストから 値が最小の節点を選び展開す
る. 子節点について CLOSED リスト内の節点とも比較
する.
ˆ ˆˆ( ) ( ) ( )f n g n h n f
xS
m
n
ˆ( ) ( )h n h n のために
ˆ ˆ( ) ( )f n f m となり CLOSEDm
ˆ ˆˆ( / ) ( ) ( , ) ( )f m n g n c n m h m
ˆ ˆ( / ) ( )f m n f m
CLOSEDm
ならば
について
ˆ ˆ( ) : ( / ), OPENf m f m n m
©2008 Ikuo Tahara
AA (( A*A* )アルゴリズム)アルゴリズム SS
SS
AA BB CC DD
EE FF HH II
GG
1
1
1
1
3
36 6
77
2
2
6 5
4
5
2
④⑦ ⑥ ④
② ③ ④ ②
OPEN : (S(0))CLOSED: [ ]
©2008 Ikuo Tahara
AA (( A*A* )アルゴリズム)アルゴリズム SS
AA BB
SS
AA BB CC DD
EE FF HH II
GG
1
1
1
1
3
36 6
77
2
2
6 5
4
5
2
④⑦ ⑥ ④
② ③ ④ ②
8 7
OPEN : (B(7) A(8))CLOSED: [S(0)]
©2008 Ikuo Tahara
AA (( A*A* )アルゴリズム)アルゴリズム SS
AA BB
CC HHFF
SS
AA BB CC DD
EE FF HH II
GG
1
1
1
1
3
36 6
77
2
2
6 5
4
5
2
④⑦ ⑥ ④
② ③ ④ ②
15 12 10
OPEN : (A(8) H(10) F(12) C(15))CLOSED: [S(0) B(7)]
8 7
©2008 Ikuo Tahara
AA (( A*A* )アルゴリズム)アルゴリズム SS
AA BB
CC HHFF
SS
AA BB CC DD
EE FF HH II
GG
1
1
1
1
3
36 6
77
2
2
6 5
4
5
2
④⑦ ⑥ ④
② ③ ④ ②
OPEN : (B(6) F(10) H(10) C(15))CLOSED: [S(0) A(8)]
7
12
10
BB6 15 10
8
©2008 Ikuo Tahara
AA (( A*A* )アルゴリズム)アルゴリズム SS
AA
BB FF
SS
AA BB CC DD
EE FF HH II
GG
1
1
1
1
3
36 6
77
2
2
6 5
4
5
2
④⑦ ⑥ ④
② ③ ④ ②
OPEN : (H(9) F(10) C(14))CLOSED: [S(0) A(8) B(6)]
6 10
CC HH14 9
11
8
©2008 Ikuo Tahara
AA (( A*A* )アルゴリズム)アルゴリズム SS
AA
BB FF
SS
AA BB CC DD
EE FF HH II
GG
1
1
1
1
3
36 6
77
2
2
6 5
4
5
2
④⑦ ⑥ ④
② ③ ④ ②
OPEN : (I(8) F(10) G(12) C(14))CLOSED: [S(0) A(8) B(6) H(9)]
10
CC HH14
GG II12 8
9
6
8
©2008 Ikuo Tahara
AA (( A*A* )アルゴリズム)アルゴリズム SS
AA
BB FF
SS
AA BB CC DD
EE FF HH II
GG
1
1
1
1
3
36 6
77
2
2
6 5
4
5
2
④⑦ ⑥ ④
② ③ ④ ②
OPEN : (F(10) G(11) C(14))CLOSED: [S(0) A(8) B(6) H(9) I(8)]
10
CC HH14
GG II12 8
GG11
9
8
6
©2008 Ikuo Tahara
AA (( A*A* )アルゴリズム)アルゴリズム SS
AA
BB FF
SS
AA BB CC DD
EE FF HH II
GG
1
1
1
1
3
36 6
77
2
2
6 5
4
5
2
④⑦ ⑥ ④
② ③ ④ ②
OPEN : (G(11) C(14) E(16))CLOSED: [S(0) A(8) B(6) H(9) I(8) F(10)]
CC HH14
II
GG11
EE 169
13
最適順路!
6
8
10
8
©2008 Ikuo Tahara
AA (( A*A* )アルゴリズムの性)アルゴリズムの性質質 評価関数 の効果ˆ ˆˆ( ) ( ) ( )f n g n h n
GS
ˆ ( )g n ˆ( )h nˆ ( )f n
©2008 Ikuo Tahara
AA (( A*A* )アルゴリズムの性)アルゴリズムの性質質 : A* アルゴリズム
最適順路を必ず見つけることができる. ならば分岐限定法に他な
らない.
ˆ: ( ) ( )n h n h n
ˆ: ( ) 0n h n
*1 1 1
*2 2 2
ˆ ˆˆA : ( ) ( ) ( )
ˆ ˆˆA : ( ) ( ) ( )
f n g n h n
f n g n h n
としたとき
1 2ˆ ˆ: ( ) ( ) ( )n h n h n h n ならば
*1A で展開された節点の集合
*2A で展開された節点の集合
top related