Upload
devon
View
35
Download
4
Embed Size (px)
DESCRIPTION
2009 人工知能(2) April 21,2009. 状態空間表現 探索法(知識を用いない探索). 状態( state )と演算( operator ). 人工知能( AI) コンピュータで作業の自動化 プログラムを用いて作成 変数や定数 , 演算を決めてモデル化. 状態と演算(作用). 状態 (state) → 次状態 (next state) ↑ 演算 , 作用 (operator) 問題を状態遷移図(グラフ)化することで解く . 力まかせ探索 ( 英 : Brute-force search ). - PowerPoint PPT Presentation
Citation preview
2009 人工知能(2)April 21,2009
状態空間表現探索法(知識を用いない探索)
状態( state )と演算( operator )
• 人工知能( AI)
• コンピュータで作業の自動化
• プログラムを用いて作成
• 変数や定数 , 演算を決めてモデル化
状態と演算(作用)
• 状態 (state) → 次状態 (next state)
↑ 演算 , 作用 (operator)
• 問題を状態遷移図(グラフ)化することで解く
力まかせ探索(英 : Brute-force search )
• 単純で汎用的な計算機科学の問題解決法
アルゴリズム• 全ての可能性のある解候補を体系的に算出• 各解候補が問題の解となるかを確認
力まかせ探索 ( 利点 , 問題点 )利点• 実装が容易• 解が存在する場合 , 必ず解くことが可能
問題点• 解候補数が組合せ爆発を起こす場合 , コストが
急激に増大
利用場面• 解候補数を処理可能程度まで縮小できる問題固
有のヒューリスティクスがある場合
例1 積み木A と C の間に B を入れる
• A を左手で持ち上げ , その間に右手で B を C の上に置き , その上に A を載せる
• 片手しか使えない , 又は1台のクレーンで持ち上げる場合も存在する
C
B
A
A
C B
方法
拘束条件• on(A,C) の A,on(B,table) の B は移動可• on(A,C) の C の場合は移動不可
状態変化例• on(A,C)→on(A,table)
• on(B,table) →on(B,A)
A C B
A
C B
C
A
B
状態空間を定義• on(X,Y)=X は Y のすぐ上に乗っていることを
示す
• 状態 : 初期状態• {on(A,C),on(C,table),on(B,table)}
A
C
Table
B
状態空間を操作• 終了状態 :{on(A,B),on(B,C),on(C,table)}
まで操作を行う .
• 状態 :1
• {on(A,table),on(C,table),on(B,table)}
A C
Table
B
状態空間を操作• 終了状態 :{on(A,B),on(B,C),on(C,table)}
まで操作を行う .
• 状態 :2
• {on(A,table),on(C,table),on(B,C)}
A C
Table
B
終了状態• 終了状態 :{on(A,B),on(B,C),on(C,table)}
なので操作終了 .
• 状態 : 終了状態• {on(A,B), on(B,C), on(C,table)}
A
C
Table
B
例 2 :ロボットの迷路抜け• 入り口から出口への経路を見つける
(ロボットは地図を知らない)
ロボットの迷路抜け制約条件• 道の真ん中を歩く(両壁から均等の距離を保つ)
ロボットの迷路抜け• 格子点上を一歩ずつ歩く:( 1,1 )から
( 4,4 )へ(4,4)
(1,1) (3,1)
(1,4)
(2,2)
ロボットの迷路抜け• ( 1,1 )から( 4,4 )へ
(4,4)
(1,1)
(1,1)
3
(2,3)
(2,3)
(2,4)
(1,4)
(1,4) (2,4) (3,4)
(3,3)
(2,2)
(3,1)
(3,2)(3,4)
(4,4) (3,3)
(2,2)
2
4
(3,2)
(3,1)
状態空間移動 ( オペレータ利用 )
オペレータ• 状態遷移=状態空間の位置移動
(迷路問題と共通点)
• 「状態」「オペレータ」「拘束条件」の定義が必要 ( 与えられているとは限らない )
• 「前提条件」「適用後に削除される状態記述」「適用後に追加される状態記述」を定義が必要
状態空間のグラフ表現
• グラフの構成node (節) ,edge (枝)
• 有向グラフと無向グラフ
• t ree (木)閉路 ( ループ ) のないグラ
フ
状態空間のグラフ表現
• 始節点 (start node) から目標節点 (goal node)へ
グラフの探索・ root から始める ,Bottom up =前向き推論・ goal から始める top down= 後ろ向き推論( :※ 各状態を重要と考えれば区別なし )
グラフ探索(基本的には前向き推論)
• 目標節点 (goal): 探査を終了する節点
• open list : 今後調べる節点を記載 (探査後 open から削除)
• 始節点が goal か探査(異なる場合は)
探索の基本アルゴリズム(木の場合)
• Search algorithm{• 1.初期節点を open リストに入れる• 2. if(open==empty)break; (探索失敗)• 3. n=first(open);• 4. i f (goal(n))print(n);break; (探索終
了)• 5. remove(n,open);• 6. 次に調べる節点を open に入れる• 7. 2へもどる}
Depth-1ST-search (木の場合)Depth-first-search algorithm{• 1.初期節点を open リストへ• 2. if(open==empty)break; (探索失敗)• 3. n=first(open);• 4. i f (goal(n))print(n);break; (探索終了)• 5. remove(n,open); • 6. 次探査を行う節点を open へ(n を展開し , 全子節点 ni を open の先頭に入れる )
ni から n へポインタを付けておく• 7. 2へ
}
例題: S→A→B→D→E→G• S ( 1,1 )から G ( 4,4 )へ
(4,4)
(1,1)
S(1,1)
(2,3)
A(2,3)
B(2,4)
D(1,4)
(1,4) (2,4) (3,4)
(3,3)
(2,2)
(3,1)
(3,2)E(3,4)
G(4,4) F(3,3)
C(2,2)
2
4
H(3,2)
I(3,1)
Depth-1ST 深さ優先探索( graph )Depth-first-search algorithm{• 1.初期節点を open リストに入れる• 2. if(open==empty)break; (探索失敗)• 3. n=first(open);• 4. i f (goal(n))print(n);break; (探索終了)• 5. remove(n,open); add(n,closed);• 6. 次探査を行う節点を open へ (n を展開し全子節点 ni を open の先頭へ )
ni から n へポインタを付けておく• 7. 2へ}
Breadth-1ST 幅優先探索( graph)Breadth-first-search algorithm{• 1.初期節点を open リストへ• 2. if(open==empty)break; (探索失敗)• 3. n=first(open);• 4. i f (goal(n))print(n);break; (探索終了)• 5. remove(n,open); add(n,closed);• 6. 次探査を行う節点を open へ (n を展開し , 全子節点 ni を open の最後へ )
ni から n へポインタを付けておく• 7. 2へ}
Open list の変化
• 深さ優先の場合S→A→BC→DEC→EC→GF
• (状態遷移は S→A→B→E→G )• 幅優先の場合
S→A→BC→CDE→DEHI→EHI→HIGF→
IGF→GF
• (状態遷移は S→A→B→E→G )