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
© Copyright 2024 ExpyDoc