Transcript 幅優先探索と最適探索
Lecture 4
田中美栄子
知識を用いない探索法
幅優先探索
Breadth-first search
幅優先探索 アルゴリズム
breadth-first search algorithm{
1. 初期節点をopenリストに入れる
2. LOOP:if(open==empty)break; (探索失敗)
3. n=first(open);
4. if(goal(n))print(n)break; (探索終了)
5. remove(n,open); add(n,closed);
6. 次に調べる節点をopenに入れる(nを展開し、全
ての子節点𝑛𝑖 をopenリストの最後に入れ、 𝑛𝑖
からnへポインタを付ける)
7. 2のLOOPへ戻る}
幅優先探索 探索例
S : 初期節点
G : 目標節点
幅優先探索 探索例
openリスト
1. S
初期節点Sをopenリストに入れ
幅優先探索 探索例
openリスト
1. S
2. a
Sの子節点aの探索
(Sは探索済みなので
openリストから除く
幅優先探索 探索例
openリスト
1. S
2. a
3. b , c
aをb , cに展開
bの探索
幅優先探索 探索例
openリスト
1. S
2. a
3. b , c
4. c , d , e
cの探索
bをd , eに展開
幅優先探索 探索例
openリスト
1. S
2. a
3. b , c
4. c , d , e
5. d , e , g , h
dの探索
cをd , eに展開
幅優先探索 探索例
openリスト
1. S
2. a
3. b , c
4. c , d , e
5. d , e , g , h
6. e , g , h
dの子節点が無いので
そのままeの探索
幅優先探索 探索例
openリスト
1. S
2. a
3. b , c
4. c , d , e
5. d , e , g , h
6. e , g , h
7. g , h , G , f
gの探索
eをG , fに展開
幅優先探索 探索例
openリスト
1. S
2. a
3. b , c
4. c , d , e
5. d , e , g , h
6. e , g , h
7. g , h , G , f
8. h , G , f
hの探索
gを展開
幅優先探索 探索例
openリスト
1. S
2. a
3. b , c
4. c , d , e
5. d , e , g , h
6. e , g , h
7. g , h , G , f
8. h , G , f
9. G , f
Gの探索が終わったので
ここで終了
幅優先探索 探索例
openリスト
1. S
2. a
3. b , c
4. c , d , e
5. d , e , g , h
6. e , g , h
7. g , h , G , f
8. h , G , f
9. G , f
探索順番
S→a→b→c→d→e→g→h→G
知識を用いない探索法
最適探索
Optimal search
枝ごとにコストが違う場合
最適探索 (optimal search)
各節点nに出発点からのコストg(n)が与えられているとき
コストの小さい順に探索する
最適探索 アルゴリズム
optimal search algorithm{
1. 初期節点をopenリストに入れる
2. LOOP:if(open==empty)break; (探索失敗)
3. n=first(open);
4. if(goal(n))print(n)break; (探索終了)
5. remove(n,open); add(n,closed);
6. 次に調べる節点をopenに入れる(nを展開し、全
ての子節点𝑛𝑖 をopenリストに入れ、 コストの
昇順に並べる。𝑛𝑖 からnへポインタを付ける)
7. 2のLOOPへ戻る}
最適探索
状態空間がグラフで表され
状態遷移の枝に出発点からのコストg(n)が計算済み
ステップ6でopenリストの中身をコストの昇順に
並べ
一番最初にコスト最小の節がくるようにする
解が複数ある場合など、最小コストの解を探せ
る
最適探索 探索例
1. S(0)
初期節点Sをopenリストに入れ
最適探索 探索例
1. S(0)
2. B(1) , A(4)
SをAとBに展開
コストの昇順に並べ替え
最適探索 探索例
1. S(0)
2. B(1) , A(4)
3. E(3) , A(4) , F(4)
手順2で最もコストの小さかったBを展
コストの昇順に並べ替え
最適探索 探索例
1. S(0)
2. B(1) , A(4)
3. E(3) , A(4) , F(4)
4. A(4) , F(4) , G1(6) , H(7)
手順3で最もコストの小さかったEを展
コストの昇順に並べ替え
最適探索 探索例
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) , D(6) , H(7)
手順4で最もコストの小さかったAを展
コストの昇順に並べ替え
最適探索 探索例
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) , D(6) , H(7)
6. G2(5) , C(5) , G1(6) , D(6) , I(6) , H(7)
手順5で最もコストの小さかったFを展開
コストの昇順に並べ替え、G2の探索終
最適探索 探索例
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) , D(6) , H(7)
6. G2(5) , C(5) , G1(6) , D(6) , I(6) , H(7)
探索順番
S→B→E→A→F→G2