680 likes | 1.47k Views
探索. 状態空間と探索木 基本的な探索アルゴリズム 横形探索と縦形探索 評価関数を利用した探索アルゴリズム 分岐限定法 山登り法 最良優先探索 A ( A* )アルゴリズム. S. #1. #2. #3. A. B. #6. #5. #4. C. #8. #7. G. D. 状態空間の探索. 状態空間. 問題. S. A. B. C. B. G. A. C. D. G. D. G. G. 状態空間の探索. 探索木. 状態空間. 初期状態. S. #1. #2. #3. A. B. #6.
E N D
探索 • 状態空間と探索木 • 基本的な探索アルゴリズム • 横形探索と縦形探索 • 評価関数を利用した探索アルゴリズム • 分岐限定法 • 山登り法 • 最良優先探索 • A(A*)アルゴリズム
S #1 #2 #3 A B #6 #5 #4 C #8 #7 G D 状態空間の探索 状態空間 • 問題
S A B C B G A C D G D G G 状態空間の探索 探索木 • 状態空間 初期状態 S #1 #2 #3 A B #6 #5 #4 C #8 #7 G D 目標状態
探索における基本的処理 • 局所的情報→大局的な情報 • 節点の選択: 展開すべき節点を選択する. • 節点の展開: 子節点をすべて求める. ※循環路を作らない.
主な探索技法 • 基本的な探索法 • 横形(幅優先)探索(Breadth-first search) • 縦形(深さ優先)探索(depth-first search) • 評価関数を利用した探索法 • 分岐限定法(Branch and bound search) • 山登り法(Hill-climbing search) • 最良優先探索(Best-first search) • A(A*)アルゴリズム(Algorithm A star )
S S 次に展開する節点 横形探索と縦形探索 • 節点の選択の制御 展開すべき節点のリスト
S A B C S 横形探索と縦形探索 • 節点の選択の制御 展開すべき節点のリスト
S A B C 横形探索と縦形探索 • 節点の選択の制御 展開すべき節点のリスト A B S
S A B C A 次に展開する節点 横形探索と縦形探索 • 節点の選択の制御 展開すべき節点のリスト B C
S A B C D E 横形探索と縦形探索 • 節点の選択の制御 展開すべき節点のリスト A B C
S A B C D E 横形探索と縦形探索 • 節点の選択の制御 展開すべき節点のリスト A B C (待ち行列) 横形(幅優先)探索
S A B C D E 横形探索と縦形探索 • 節点の選択の制御 展開すべき節点のリスト A B C (スタック) 縦形(深さ優先)探索
S A B C D E F H I G 横形探索 S OPEN : (S) CLOSED: [ ]
S A B C D E F H I G 横形探索 S A B OPEN : (A B) CLOSED: [S]
S A B C D E F H I G 横形探索 S A B F OPEN : (B F) CLOSED: [S A]
S A B C D E F H I G 横形探索 S A B H F C OPEN : (F C H) CLOSED: [S A B]
S A B C D E F H I G 横形探索 S A B H F C E OPEN : (C H E) CLOSED: [S A B F]
S A B C D E F H I G 横形探索 S A B H F C E D I OPEN : (H E D I) CLOSED: [S A B F C]
S A B C D E F H I G 横形探索 S A B H F C G E D I OPEN : (E D I G) CLOSED: [S A B F C H]
S A B C D E F H I G 縦形探索 S OPEN : (S) CLOSED: [ ]
S A B C D E F H I G 縦形探索 S A B OPEN : (A B) CLOSED: [S]
S A B C D E F H I G 縦形探索 S A B F OPEN : (F B) CLOSED: [S A]
S A B C D E F H I G 縦形探索 S A B F E H OPEN : (E H B) CLOSED: [S A F]
S A B C D E F H I G 縦形探索 S A B F E H OPEN : (H B) CLOSED: [S AF E]
S A B C D E F H I G 縦形探索 S A B F E H OPEN : (G I B) CLOSED: [S A F E H] G I
横形探索と縦形探索の比較 • 探索木 • 各節点の分岐数: • 深さ の節点を生成しようとしているとき
(1)OPENリストのメモリ量 • 横形探索 • OPENリスト内の節点数は少なくとも OPENリストとして 保持している ( の指数オーダー)
(1)OPENリストのメモリ量 • 縦形探索 • OPENリスト内の節点数は少なくとも OPENリストとして 保持している ( の線形オーダー)
(2)計算量 • 探索する節点数 • 縦形でも横形でも最悪の場合 ( の指数オーダー)
縦形探索の特徴 • 縦形探索 • メモリ量に関しては効率がよい. • 再帰呼び出しによる実現が容易である. • 問題点 • 目標状態が探索木の右上にくるような場合は横形と比して非常に効率が悪い. • 特に,目標状態が有限な深さに存在するにもかかわらず深さが無限な探索木に対して探索が終了しない場合がある.
再帰呼出しによる縦形探索 • Procedure S(n,R) • if n=G then flag:=T, print(R), exit. • c:=children(n). • if c= then flag:=F, exit. • n’:=top(c), c:=c-{n’}. • if n’R then goto 3. • R’:=R+{n’}. • S(n’,R’). • if flag=F then goto 3 else exit.
n S G 評価関数の導入 • 最適順路のコスト: • 節点 n の評価 a b
評価関数の導入 • の推定値: • :その探索時点で最適な順路の評価値 • :ヒューリスティック関数
評価関数を利用した探索法 • 分岐限定法(Branch and bound search) • 山登り法(Hill-climbing search) • 最良優先探索(Best-first search) • A(A*)アルゴリズム(A star algorithm)
コストの導入 S 1 3 1 6 5 A B C D 6 3 4 6 2 1 2 E F H I 1 7 2 7 5 G
n S 分岐限定法 • OPENリストから 値が最小の節点を選び展開する. m 無視 mへの最適順路は発見済み → 無視
S 3 1 1 6 5 A B C D 6 2 2 1 6 3 4 E F H I 1 7 2 7 5 G 分岐限定法 0 S OPEN : (S(0)) CLOSED: [ ]
分岐限定法 S S 3 1 1 1 3 6 A B 5 A B C D 6 2 2 1 6 3 4 E F H I 1 7 2 7 5 G OPEN : (A(1) B(3)) CLOSED: [S]
分岐限定法 S S 3 1 1 3 6 A B 5 A B C D 6 2 2 1 6 3 4 2 7 B F E F H I 1 7 2 7 5 G OPEN : (B(2) F(7)) CLOSED: [S A]
分岐限定法 S S 3 1 1 6 A 5 A B C D 6 2 2 1 6 3 4 7 B F E F H I 1 8 7 2 7 5 G 8 5 C H OPEN : (H(5) F(7) C(8)) CLOSED: [S A B]
分岐限定法 S S 3 1 1 6 A 5 A B C D 6 2 2 1 6 3 4 7 B F E F H I 1 7 2 7 5 G 8 C H 6 12 G I OPEN : (I(6) F(7) C(8) G(12)) CLOSED: [S A B H]
分岐限定法 S S 3 1 1 6 A 5 A B C D 6 2 2 1 6 3 4 7 B F E F H I 1 7 2 7 5 G 8 C H 12 G I OPEN : (F(7) C(8) G(11)) CLOSED: [S A B H I] 11 G
分岐限定法 S S 3 1 1 6 A 5 A B C D 6 2 2 1 6 3 4 B F E F H I 1 7 2 7 5 9 G 8 14 E C H I OPEN : (C(8)G(11) E(14)) CLOSED: [S A B H I F] 11 G
分岐限定法 S S 3 1 1 6 A 5 A B C D 6 2 2 1 6 3 4 B F E F H I 1 7 2 7 5 10 G 14 E C H 最適順路! 13 D 12 I OPEN : (G(11) D(13) E(14)) CLOSED: [S A B H I F C] 11 G
ヒューリスティック値の導入 S 3 1 7 4 4 6 A 1 B 6 C 5 D 6 3 4 6 1 2 2 E F H I 1 7 2 2 2 3 4 7 5 G
S ⑦ ④ ⑥ ④ A B C D E F H I ② ③ ④ ② G 山登り法 • 展開して得られた子節点にのみに着目し, 値の最小の節点を選択する. S ⑦ ④ A B ③ ⑥ ④ C F H ② ④ E H ⑦ A ・循環路に陥る ・局所解に陥る ④ B F ③
S ⑦ ④ ⑥ ④ A B C D E F H I ② ③ ④ ② G 最良優先探索 • OPENリストのすべての節点に着目し, 値の最小の節点を選択する. S OPEN : (S) CLOSED: []
最良優先探索 • OPENリストのすべての節点に着目し, 値の最小の節点を選択する. S S ⑦ ④ ⑥ ④ ④ ⑦ A B A B C D E F H I ② ③ ④ ② G OPEN : (B(4) A(7)) CLOSED: [S]
最良優先探索 • OPENリストのすべての節点に着目し, 値の最小の節点を選択する. S S ⑦ ④ ⑥ ④ ⑦ A B A B C D ③ ⑥ ④ C F H E F H I ② ③ ④ ② G OPEN : (F(3) H(4) C(6) A(7)) CLOSED: [S B]
最良優先探索 • OPENリストのすべての節点に着目し, 値の最小の節点を選択する. S S ⑦ ④ ⑥ ④ ⑦ A B A B C D ⑥ ④ C F H E F H I ② ③ ④ ② ② E G OPEN : (E(2) H(4) C(6) A(7)) CLOSED: [S B F]