Transcript Document

探索


状態空間と探索木
基本的な探索アルゴリズム


横形探索と縦形探索
評価関数を利用した探索アルゴリズム




分岐限定法
山登り法
最良優先探索
A(A*)アルゴリズム
©2008 Ikuo Tahara
状態空間の探索

状態空間
問題
S
規則 前提条件
追加リスト
#1
S
A
#2
S
B
#3
A
B
#4
A
G
#5
B
C
#6
C
A
#7
C
D
#8
C
G
#1
#2
#3
A
B
#6
#4
#5
C
#8
G
©2008 Ikuo Tahara
#7
D
状態空間の探索

探索木
状態空間
S
初期状態
S
#1
#2
A
B
#3
A
B
#6
#4
C
G
#5
A
C
C
#8
G
B
#7
目標状態
D
G
D
©2008 Ikuo Tahara
G
D
G
探索における基本的処理

局所的情報→大局的な情報


節点の選択: 展開すべき節点を選択する.
節点の展開: 子節点をすべて求める.
※循環路を作らない.
©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
S
A
B
C
©2008 Ikuo Tahara
横形探索と縦形探索

節点の選択の制御
展開すべき節点のリスト
S
A
A
B
C
©2008 Ikuo Tahara
B
S
横形探索と縦形探索

節点の選択の制御
展開すべき節点のリスト
S
A
A
B
C
次に展開する節点
©2008 Ikuo Tahara
B
C
横形探索と縦形探索

節点の選択の制御
展開すべき節点のリスト
S
A
A
D
B
C
E
©2008 Ikuo Tahara
B
C
横形探索と縦形探索

節点の選択の制御
展開すべき節点のリスト
S
A
A
D
B
C
B
C
(待ち行列)
E
横形(幅優先)探索
©2008 Ikuo Tahara
横形探索と縦形探索

節点の選択の制御
展開すべき節点のリスト
S
A
A
D
B
C
B
C
(スタック)
E
縦形(深さ優先)探索
©2008 Ikuo Tahara
横形探索
S
S
A
B
C
D
E
F
H
I
G
OPEN : (S)
CLOSED: [ ]
©2008 Ikuo Tahara
横形探索
S
S
A
B
C
D
E
F
H
I
A
G
OPEN : (A B)
CLOSED: [S]
©2008 Ikuo Tahara
B
横形探索
S
S
A
B
C
D
E
F
H
I
A
F
G
OPEN : (B F)
CLOSED: [S A]
©2008 Ikuo Tahara
B
横形探索
S
S
A
B
C
D
E
F
H
I
A
F
G
OPEN : (F C H)
CLOSED: [S A B]
©2008 Ikuo Tahara
B
C
H
横形探索
S
S
A
B
C
D
E
F
H
I
A
F
G
E
OPEN : (C H E)
CLOSED: [S A B F]
©2008 Ikuo Tahara
B
C
H
横形探索
S
S
A
B
C
D
E
F
H
I
A
B
F
H
C
G
E
OPEN : (H E D I)
CLOSED: [S A B F C]
©2008 Ikuo Tahara
D
I
横形探索
S
S
A
B
C
D
E
F
H
I
A
B
F
H
C
G
E
OPEN : (E D I G)
CLOSED: [S A B F C H]
©2008 Ikuo Tahara
D
I
G
縦形探索
S
S
A
B
C
D
E
F
H
I
G
OPEN : (S)
CLOSED: [ ]
©2008 Ikuo Tahara
縦形探索
S
S
A
B
C
D
E
F
H
I
A
G
OPEN : (A B)
CLOSED: [S]
©2008 Ikuo Tahara
B
縦形探索
S
S
A
B
C
D
E
F
H
I
A
F
G
OPEN : (F B)
CLOSED: [S A]
©2008 Ikuo Tahara
B
縦形探索
S
S
A
B
C
D
E
F
H
I
A
B
F
G
E
H
OPEN : (E H B)
CLOSED: [S A F]
©2008 Ikuo Tahara
縦形探索
S
S
A
B
C
D
E
F
H
I
A
B
F
G
E
H
OPEN : (H B)
CLOSED: [S A F E]
©2008 Ikuo Tahara
縦形探索
S
S
A
B
C
D
E
F
H
I
A
B
F
G
E
OPEN : (G I B)
CLOSED: [S A F E H]
H
G
I
©2008 Ikuo Tahara
横形探索と縦形探索の比較

探索木


各節点の分岐数: b
深さ d の節点を生成しようとしているとき
d 0
b  3 の場合
d 1
d 2
d 3
©2008 Ikuo Tahara
(1)OPENリストのメモリ量

横形探索
OPENリストとして
保持している

d 1
OPENリスト内の節点数は少なくとも b
O(bd ) ( d の指数オーダー)
©2008 Ikuo Tahara
(1)OPENリストのメモリ量

縦形探索
OPENリストとして
保持している

OPENリスト内の節点数は少なくとも (b 1)(d  2)  b
 (b 1)(d 1)  1
O(db) ( d の線形オーダー)
©2008 Ikuo Tahara
(2)計算量

探索する節点数

d
n
b
縦形でも横形でも最悪の場合 
n 1
O(bd ) ( 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
評価関数の導入

最適順路のコスト: c(a, b)
a
b
c(a, b)

節点 n の評価
f (n)  g(n)  h(n)
S
g(n)  c(S, n)
n
G
h(n)  c(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)
fˆ (n)  gˆ (n)

山登り法(Hill-climbing search)
fˆ (n)  hˆ(n)


最良優先探索(Best-first search)
A(A*)アルゴリズム(A star algorithm)
fˆ (n)  gˆ (n)  hˆ(n)
©2008 Ikuo Tahara
コストの導入
S
1
A
1
E
3
1
6
7
B
6
F
6
C
3
2
2
H
5
D
4
2
I
1
7
5
G
©2008 Ikuo Tahara
分岐限定法

OPENリストから gˆ 値が最小の節点を選び展開する.
gˆ (m)
m
n
S
gˆ (m / n)  gˆ (n)  c(n, m)



m OPEN, CLOSED
gˆ (m) : gˆ (m / n)
m OPEN
gˆ (m / n)  gˆ (m)  gˆ (m) : gˆ (m / n)
gˆ (m / n)  gˆ (m)  無視
m CLOSED
mへの最適順路は発見済み → 無視
©2008 Ikuo Tahara
分岐限定法
0 S
S
3
1
A
1
1
6
6
E
B
7
F
6
3
2
5
C
2
D
2
4
H
1
7
I
5
G
OPEN : (S(0))
CLOSED: [ ]
©2008 Ikuo Tahara
分岐限定法
S
S
3
1
A
1
1
6
6
E
B
7
F
6
3
2
5
C
2
D
2
4
H
1
7
1 A
I
5
G
OPEN : (A(1) B(3))
CLOSED: [S]
©2008 Ikuo Tahara
B 3
分岐限定法
S
S
3
1
A
1
1
6
6
E
B
7
F
6
3
2
5
C
2
1
7
B 3
2
4
H
A
D
I
2 B
5
G
OPEN : (B(2) F(7))
CLOSED: [S A]
©2008 Ikuo Tahara
F 7
分岐限定法
S
S
3
1
A
1
1
6
6
E
B
7
F
6
3
2
5
C
2
2
4
H
1
7
A
D
B
I
8
F 7
5
G
8 C
OPEN : (H(5) F(7) C(8))
CLOSED: [S A B]
©2008 Ikuo Tahara
H 5
分岐限定法
S
S
3
1
A
1
1
6
6
E
B
7
F
6
3
2
5
C
2
2
4
H
1
7
A
D
B
I
F 7
5
G
8 C
12 G
OPEN : (I(6) F(7) C(8) G(12))
CLOSED: [S A B H]
©2008 Ikuo Tahara
H
I
6
分岐限定法
S
S
3
1
A
1
1
6
6
E
B
7
F
6
3
2
5
C
2
2
4
H
1
7
A
D
B
I
F 7
5
G
8 C
12 G
OPEN : (F(7) C(8) G(11))
CLOSED: [S A B H I]
H
I
G 11
©2008 Ikuo Tahara
分岐限定法
S
S
3
1
A
1
1
6
6
E
B
7
F
6
3
2
5
C
2
2
4
H
1
7
A
D
B
I
F
5
G
9
8 C
E 14
H
I
OPEN : (C(8) G(11) E(14))
CLOSED: [S A B H I F]
G 11
©2008 Ikuo Tahara
分岐限定法
S
S
3
1
A
1
1
6
6
E
B
7
F
6
3
2
5
C
2
2
4
H
1
7
A
D
B
I
F
5
G
C
10
E 14
H
最適順路!
13
D
OPEN : (G(11) D(13) E(14))
CLOSED: [S A B H I F C]
12
I
G 11
©2008 Ikuo Tahara
ヒューリスティック値の導入
S
7
A
1
E
2
3
1
1
6
7
4
B
6
3
6
F
3
4
6
2
C
2
H
5
D
4
2
I
1
4 7
5
G
©2008 Ikuo Tahara
2
山登り法

展開して得られた子節点にのみに着目し, hˆ 値の最小
の節点を選択する.
S
S
⑦
④
⑥
④
A
B
C
D
E
F
H
I
②
③
④
⑦ A
B ④
⑥ C ③ F
② E
②
G
・循環路に陥る
・局所解に陥る
H ④
H ④
⑦ A
④ B
©2008 Ikuo Tahara
F ③
最良優先探索

OPENリストのすべての節点に着目し, hˆ 値の最小の節
点を選択する.
S
⑦
S
④
⑥
④
A
B
C
D
E
F
H
I
②
③
④
②
G
OPEN : (S)
CLOSED: [ ]
©2008 Ikuo Tahara
最良優先探索

OPENリストのすべての節点に着目し, hˆ 値の最小の節
点を選択する.
S
⑦
S
④
⑥
④
A
B
C
D
E
F
H
I
②
③
④
⑦ A
②
G
OPEN : (B(4) A(7))
CLOSED: [S]
©2008 Ikuo Tahara
B ④
最良優先探索

OPENリストのすべての節点に着目し, hˆ 値の最小の節
点を選択する.
S
⑦
S
④
⑥
④
A
B
C
D
E
F
H
I
②
③
④
⑦ A
B
⑥ C ③ F
②
G
OPEN : (F(3) H(4) C(6) A(7))
CLOSED: [S B]
©2008 Ikuo Tahara
H ④
最良優先探索

OPENリストのすべての節点に着目し, hˆ 値の最小の節
点を選択する.
S
⑦
S
④
⑥
④
A
B
C
D
E
F
H
I
②
③
④
⑦ A
⑥ C
B
F
②
② E
G
OPEN : (E(2) H(4) C(6) A(7))
CLOSED: [S B F]
©2008 Ikuo Tahara
H ④
最良優先探索

OPENリストのすべての節点に着目し, hˆ 値の最小の節
点を選択する.
S
⑦
S
④
⑥
④
A
B
C
D
E
F
H
I
②
③
④
⑦ A
⑥ C
B
F
②
E
G
OPEN : (H(4) C(6) A(7))
CLOSED: [S B F E]
©2008 Ikuo Tahara
H ④
最良優先探索

OPENリストのすべての節点に着目し, hˆ 値の最小の節
点を選択する.
S
⑦
S
④
⑥
④
A
B
C
D
E
F
H
I
②
③
④
⑦ A
⑥ C
B
F
H
②
E
G
OPEN : (G(0) I(2) C(6) A(7))
CLOSED: [S B F E H]
©2008 Ikuo Tahara
G
I ②
最良優先探索


有限グラフの場合,必ず成功する.
無限グラフの場合,探索が終了しないことがある.
F ( x)  F ( x 1)
F ( x)  G( x)
G( x)  H ( x)
H (5).
証明に要するコストの予測値
F ( x) :
①
G( x), H ( x) : ②
F (5)
F (5) ?
① F (4)
② G(5)
① F (3) ② G(4)
無限ループ
©2008 Ikuo Tahara
H (5)
A(A*)アルゴリズム



評価関数 fˆ (n)  gˆ (n)  hˆ(n) を用いる.
OPENリストから fˆ 値が最小の節点を選び展開する.
子節点についてCLOSEDリスト内の節点とも比較する.
hˆ(n)
h(n) のために fˆ (n)  fˆ (m) となり m CLOSED
m
S
fˆ (m / n)  gˆ (n)  c(n, m)  hˆ(m)
x
n
m CLOSED について
fˆ (m / n)  fˆ (m) ならば
fˆ (m): fˆ (m / n), m OPEN
©2008 Ikuo Tahara
A(A*)アルゴリズム
S
S
3④
⑦ 1
A
1
1
6
6
E
②
B
7
F
③
⑥
6
3
2
④
5
C
2
H
④ 7
D
2
4
1
I
5 ②
G
OPEN : (S(0))
CLOSED: [ ]
©2008 Ikuo Tahara
A(A*)アルゴリズム
S
S
3④
⑦ 1
A
1
1
6
6
E
②
B
7
F
③
⑥
6
3
2
④
5
C
2
H
④ 7
D
2
4
1
8 A
I
5 ②
G
OPEN : (B(7) A(8))
CLOSED: [S(0)]
©2008 Ikuo Tahara
B 7
A(A*)アルゴリズム
S
S
3④
⑦ 1
A
1
1
6
6
E
②
B
7
F
③
⑥
6
3
2
④
5
C
2
H
④ 7
B 7
2
4
1
8 A
D
15 C 12 F
I
5 ②
G
OPEN : (A(8) H(10) F(12) C(15))
CLOSED: [S(0) B(7)]
©2008 Ikuo Tahara
H 10
A(A*)アルゴリズム
S
S
3④
⑦ 1
A
1
1
6
6
E
②
B
7
F
③
⑥
6
3
2
④
5
C
2
H
④ 7
10
B 7
2
4
1
8 A
D
6 B 15 C 12 F
I
5 ②
G
OPEN : (B(6) F(10) H(10) C(15))
CLOSED: [S(0) A(8)]
©2008 Ikuo Tahara
H 10
A(A*)アルゴリズム
S
S
3④
⑦ 1
A
1
1
6
6
E
②
B
7
F
③
⑥
6
3
2
④
5
C
2
H
④ 7
2
4
1
8 A
D
I
6 B
5 ②
G
14 C
OPEN : (H(9) F(10) C(14))
CLOSED: [S(0) A(8) B(6)]
©2008 Ikuo Tahara
11
F 10
H 9
A(A*)アルゴリズム
S
S
3④
⑦ 1
A
1
1
6
6
E
②
B
7
F
③
⑥
6
3
2
④
5
C
2
H
④ 7
2
4
1
8 A
D
6 B
I
F 10
5 ②
G
14 C
12 G
OPEN : (I(8) F(10) G(12) C(14))
CLOSED: [S(0) A(8) B(6) H(9)]
©2008 Ikuo Tahara
H 9
I 8
A(A*)アルゴリズム
S
S
3④
⑦ 1
A
1
1
6
6
E
②
B
7
F
③
⑥
6
3
2
④
5
C
2
H
④ 7
2
4
1
8 A
D
6 B
I
F 10
5 ②
G
14 C
12 G
OPEN : (F(10) G(11) C(14))
CLOSED: [S(0) A(8) B(6) H(9) I(8)]
©2008 Ikuo Tahara
H 9
I 8
11 G
A(A*)アルゴリズム
S
S
3④
⑦ 1
A
1
1
6
6
E
②
B
7
F
③
⑥
6
3
2
④
5
C
2
H
④ 7
2
4
1
G
8 A
D
F 10
6 B
I
13
5 ②
14 C
H 9 E 16
最適順路!
I 8
OPEN : (G(11) C(14) E(16))
CLOSED: [S(0) A(8) B(6) H(9) I(8) F(10)]
©2008 Ikuo Tahara
11 G
A(A*)アルゴリズムの性質

評価関数 fˆ (n)  gˆ (n)  hˆ(n) の効果
G
S
hˆ(n)
gˆ (n)
fˆ (n)
©2008 Ikuo Tahara
A(A*)アルゴリズムの性質

n : hˆ(n)  h(n) :


A*アルゴリズム
最適順路を必ず見つけることができる.
n : hˆ(n)  0 ならば分岐限定法に他ならない.
A1* : fˆ1 (n)  gˆ (n)  hˆ1 (n)
としたとき
*
A : fˆ (n)  gˆ (n)  hˆ (n)
2
2
2
n : hˆ1 (n)  hˆ2 (n)  h(n) ならば
A1* で展開された節点の集合  A*2 で展開された節点の集合
©2008 Ikuo Tahara