25
2009 人人人人(2) April 21,2009 人人人人人人 人人人 人人人人人人人人人人 ()

2009 人工知能(2) April 21,2009

  • 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

Page 1: 2009 人工知能(2) April 21,2009

2009 人工知能(2)April   21,2009

状態空間表現探索法(知識を用いない探索)

Page 2: 2009 人工知能(2) April 21,2009

状態( state )と演算( operator )

• 人工知能( AI)  

• コンピュータで作業の自動化

• プログラムを用いて作成

• 変数や定数 , 演算を決めてモデル化

Page 3: 2009 人工知能(2) April 21,2009

状態と演算(作用)

• 状態 (state)  → 次状態 (next state)

         ↑     演算 , 作用 (operator)

• 問題を状態遷移図(グラフ)化することで解く 

Page 4: 2009 人工知能(2) April 21,2009

力まかせ探索(英 : Brute-force search )

• 単純で汎用的な計算機科学の問題解決法

アルゴリズム• 全ての可能性のある解候補を体系的に算出• 各解候補が問題の解となるかを確認

Page 5: 2009 人工知能(2) April 21,2009

力まかせ探索 ( 利点 , 問題点 )利点• 実装が容易• 解が存在する場合 , 必ず解くことが可能

問題点• 解候補数が組合せ爆発を起こす場合 , コストが

   急激に増大

利用場面• 解候補数を処理可能程度まで縮小できる問題固

有のヒューリスティクスがある場合

Page 6: 2009 人工知能(2) April 21,2009

例1 積み木A と C の間に B を入れる

• A を左手で持ち上げ , その間に右手で B を C の上に置き , その上に A を載せる

• 片手しか使えない , 又は1台のクレーンで持ち上げる場合も存在する

C

B

A

A

C B

方法

Page 7: 2009 人工知能(2) April 21,2009

拘束条件• 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

Page 8: 2009 人工知能(2) April 21,2009

状態空間を定義• on(X,Y)=X は Y のすぐ上に乗っていることを

示す

• 状態 : 初期状態• {on(A,C),on(C,table),on(B,table)}

A

C

Table

B

Page 9: 2009 人工知能(2) April 21,2009

状態空間を操作• 終了状態 :{on(A,B),on(B,C),on(C,table)}  

 まで操作を行う .

• 状態 :1

• {on(A,table),on(C,table),on(B,table)}

A C

Table

B

Page 10: 2009 人工知能(2) April 21,2009

状態空間を操作• 終了状態 :{on(A,B),on(B,C),on(C,table)}  

 まで操作を行う .

• 状態 :2

• {on(A,table),on(C,table),on(B,C)}

A C

Table

B

Page 11: 2009 人工知能(2) April 21,2009

終了状態• 終了状態 :{on(A,B),on(B,C),on(C,table)}  

 なので操作終了 .

• 状態 : 終了状態• {on(A,B), on(B,C), on(C,table)}

A

C

Table

B

Page 12: 2009 人工知能(2) April 21,2009

例 2 :ロボットの迷路抜け• 入り口から出口への経路を見つける  

         (ロボットは地図を知らない)

Page 13: 2009 人工知能(2) April 21,2009

ロボットの迷路抜け制約条件• 道の真ん中を歩く(両壁から均等の距離を保つ)

Page 14: 2009 人工知能(2) April 21,2009

ロボットの迷路抜け• 格子点上を一歩ずつ歩く:( 1,1 )から

( 4,4 )へ(4,4)

(1,1) (3,1)

(1,4)

(2,2)

Page 15: 2009 人工知能(2) April 21,2009

ロボットの迷路抜け• ( 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)

Page 16: 2009 人工知能(2) April 21,2009

状態空間移動 ( オペレータ利用 )

オペレータ• 状態遷移=状態空間の位置移動

(迷路問題と共通点)

• 「状態」「オペレータ」「拘束条件」の定義が必要    ( 与えられているとは限らない )

• 「前提条件」「適用後に削除される状態記述」「適用後に追加される状態記述」を定義が必要

Page 17: 2009 人工知能(2) April 21,2009

状態空間のグラフ表現

• グラフの構成node (節) ,edge (枝)

• 有向グラフと無向グラフ

• t ree (木)閉路 ( ループ ) のないグラ

Page 18: 2009 人工知能(2) April 21,2009

状態空間のグラフ表現

• 始節点 (start node) から目標節点 (goal node)へ

グラフの探索・  root から始める ,Bottom up =前向き推論・  goal から始める top down= 後ろ向き推論( :※ 各状態を重要と考えれば区別なし )

Page 19: 2009 人工知能(2) April 21,2009

グラフ探索(基本的には前向き推論)

• 目標節点 (goal): 探査を終了する節点

• open list : 今後調べる節点を記載 (探査後 open から削除)

• 始節点が goal か探査(異なる場合は)

Page 20: 2009 人工知能(2) April 21,2009

探索の基本アルゴリズム(木の場合)

• 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へもどる}

Page 21: 2009 人工知能(2) April 21,2009

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へ

Page 22: 2009 人工知能(2) April 21,2009

例題: 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)

Page 23: 2009 人工知能(2) April 21,2009

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へ}

Page 24: 2009 人工知能(2) April 21,2009

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へ}

Page 25: 2009 人工知能(2) April 21,2009

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 )