人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

34
人人人人 Lecture 6 人人人人人AND/OR 人人人人人 人人人人人

description

人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6. 田中美栄子. 第一部のおさらい. 問題の定式化: オペレータ :今の 状態 →次の 状態 探索アルゴリズム(知識を用いない探索) depth-1 st , breadth-1 st , optimal ヒューリステック 探索: A*-algorithm 小テスト1. ロボットの迷路抜け. (1,1). ( 1,1 )から( 4,4 )へ. 3. (3,4). (4,4). (2,4). (2,3). (1,4). (2,4). (2,2). (2,3). (3,3). - PowerPoint PPT Presentation

Transcript of 人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

Page 1: 人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

人工知能  Lecture 6

問題の分解、 AND/ORハノイの塔

田中美栄子

Page 2: 人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

第一部のおさらい• 問題の定式化:      オペレータ:今の状態→次の

状態

• 探索アルゴリズム(知識を用いない探索)

       depth-1st, breadth-1st , optimal

• ヒューリステック探索: A*-algorithm

• 小テスト1

Page 3: 人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

ロボットの迷路抜け• ( 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 4: 人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

探索の基本アルゴリズム• 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 5: 人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

例題: S→A→B→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 6: 人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

Heuristic search

• 最良優先探索: best-first-search• 各節点からゴールまでのコスト(距離)

h(n) が予想出来るとき使える• ステップ6で予想値 h’(n) の昇順に並べる

Page 7: 人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

ヒューリスティック探索の問題点

• ヒューリスティック関数( h’ )の推定が悪いと、失敗

• 例:迷路の問題    h’ =| A x ー  Gx |+| A y ー  G

y|

経路のつながり具合によって成功することもあり、失敗することもある。(使えるヒント:正しい保

障はない)

こういうヒントを多用して解を発見  ヒューリスティック

Page 8: 人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

h=|n の x 座標 -G の x 座標 |+| n の y 座標 -Gの y 座標 |

• S ( 1,1 )から G ( 4,4 )へ

(4,4)

(1,1)

S(1,1)6

(2,3)

A(2,3)3

B(2,4)2

D(1,4)3

(1,4) (2,4) (3,4)

(3,3)

(2,2)

(3,1)

(3,2)E(3,4)1

G(4,4)0 F(3,3)

C(2,2)4

2

4

H(3,2)

I(3,1)

Page 9: 人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

A* ーアルゴリズム• A*-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 に入れ、推定コスト f(ni) の昇順に並べる ) ここで f(ni)=g’(ni)+h’(ni) であり、推定値 h’(ni) が本当の値 h(ni) 以下であるとする。(これが成立しないとA*-search でなく、 A-search になり、解は保証されない ) g’(ni) は g(ni) の推定値だが、出発点から ni までの、解っているコストの内で最小のもの。

   ni から n へポインタを付けておく• 7.  2へもどる}

Page 10: 人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

h=|n の x 座標 -G の x 座標 |+| n の y 座標 -Gの y 座標 |

• S ( 1,1 )から G ( 4,4 )へ

(4,4)

(1,1)

S(1,1)6

(2,3)

A(2,3)3

B(2,4)2

D(1,4)3

(1,4) (2,4) (3,4)

(3,3)

(2,2)

(3,1)

(3,2)E(3,4)1

G(4,4)0 F(3,3)

C(2,2)4

2

4

H(3,2)

I(3,1)

Page 11: 人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

比較:深さ優先、幅優先、 A*      open list

Counter D- 1 st    B- 1 st       A*

   1      S      S         S(6)

   2      A      A A(6)

   3     BC     BC        B(6)C(8)

   4    DEC    CDE      E(6)D(8)C(8)

   5     EC    DEHI      G(6)FDC

Page 12: 人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

Problem reduction representation• 問題を分割し、すぐ解ける副問題の集合に変換

• 許された変換は「オペレータ(作用素)」として定義

• すぐ解ける問題は原始問題 primitive problem とよぶ

• 問題分割を用いた問題表現は、   1.開始問題記述    2,問題を副問題群に変換する作用素   3.原始問題記述の集合

Page 13: 人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

問題分割表現の例:ハノイの塔• 大きさが順に大きくなる3つの円盤、 A,B,C と

3つの柱 1,2,3.  最初円盤は全て柱1の上に、一番小さい A を一番上に、 C を一番下にして積み重ねられている。これを柱3に A が一番上になるように移す、但し一度に1個だけ円盤を動かせる、どの円盤もそれより小さい円盤の上に置けない

• 最初に出来るのは A を柱 2 か柱 3 に移すことだが、そのあと A の上には B も C も置けないので、つまりは A を移さなかった柱に B を移して置いて、その上に A を移し、空いた柱 3 に C を移すことができれば成功である.次にその C の上に B を載せ、その上に A を載せる

Page 14: 人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

8段階を右の3段階と見る

1 .ABC   2. _   3. _1 .   BC   2. _   3.   A1 .    C   2.   B    3.   A1 .   C   2.   AB   3. __

1 . __  2.   AB   3.   C1 . A    2.   B    3.   C1 . A    2.  _  3.   BC1 . __  2. __  3. ABC

高さ2の山を 1. から 2. へ移す

高さ1を 1. から 3.へ

高さ2の山を2. から 3. へ移す

Page 15: 人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

円盤を N 個に増やしても右の3段階

1 .AB..C   2. _   3. _

1 .   C   2. AB..   3. __

1 . __  2. AB..   3.   C

1 . __  2. __  3. ABC

高さ N-1 の山を 1. から2. へ

高さ1を 1. から3. へ

高さ N-1 の山を 2. から3. へ

Page 16: 人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

目標:高さ3の山を柱1から柱3へ移す

小目標:高さ 2の山を柱 2 から柱 3 へ移す

小目標:高さ 2の山を柱 1 から柱 2 へ避難させる

原始問題:高さ 1 の山を柱1 から柱 3 へ移動

高さ 1の山を柱 1 から柱 3へ移動

高さ 1の山を柱 1 から柱 2へ移動

高さ 1の山を柱 3 から柱 2へ移動 高さ 1 の

山を柱 2から柱 1へ移動

高さ 1 の山を柱 2 から柱 3 へ移動

高さ 1の山を柱 1 から柱 3へ移動

Page 17: 人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

ハノイの塔( N=2 )始→中 1→ 中2→終

中 1

中2

Page 18: 人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

ハノイの塔( N=2) は中間 2 ステップ

始状態(大小円盤が軸1にある)

終状態(大小円盤が軸3にある)

大円盤を軸 1 に残し小円盤を軸2に移動

大円盤を軸 3 に移動し小円盤は軸2

Page 19: 人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

ハノイの塔( N= 3)始→中 1→中2→終

中 1

中2

始→ 1’→ 2’→中 1

中 2→1”→ 2”→終

Page 20: 人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

ハノイの塔( N= 3)始→中 1→ 中2→終

中1

中2

Page 21: 人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

ハノイの塔( N=3) は中間 6 ステップ(中間 2 ステップの前後に各々下部中間

2 ステップ)始状態(大中小が軸1にある)

終状態(大中小円盤が軸3にある)

大は軸 1. 中小は軸2大を軸 3 に移動し中小は軸2

中を軸 2 に移す小は軸 3 、大は軸1

小を軸 1 に中は軸2、大は軸3小は軸 1 、大中は軸3

小を軸 3 に移す。大中は軸1のまま

Page 22: 人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

ハノイの塔( N= 4)始→中 1→中2→終

1

2

Page 23: 人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

ハノイの塔( N= 4)始→中 1→中2→終

1

2

Page 24: 人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

ハノイの塔( N=4) は中間 14 ステップ

始状態(大中小が軸1にある)

終状態(大中小円盤が軸3にある)

大は軸 1. 中小は軸2大を軸 3 に移動し中小は軸2

中を軸 2 に移す小は軸 3 、大は軸1

小を軸 1 に中は軸2、大は軸3小は軸 1 、大中は軸3

小を軸 3 に移す。大中は軸1のまま

Page 25: 人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

ハノイの塔( N=5 )始→中 1→ 中2→ 終

中1

中2

Page 26: 人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

ハノイの塔( N=5 )

Page 27: 人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

問題

• N=5 のハノイの塔は始状態と終状態の間に何ステップ余分に必要か?

• N 円盤のハノイの塔は始状態と終状態の間に何ステップ余分に必要か?

Page 28: 人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

Nilsson ( 1971 )による AND/ORグラフ

1)各節点は単一問題か一連の問題であり、グラフは開始節点(元問題)を含む.

2)終端節点(原始問題)=葉3)問題 P に対しこれを一組の副問題に変える作

用素があり、これを適用した結果生じる副問題に対応する節点へ向かって有向枝がある.このいずれかの子節点が解かれたときPが解けるのなら、 OR節点( OR-node) 、全ての子節点が解かれたとき P が解けるのなら AND節点( AND-node)とよぶ .AND 節点には枝を水平線で結ぶ

Page 29: 人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

開始問題が解けるかどうかを示すグラフ( or,木)を解グラフ(解

木)という• 解ける節点の条件として、1)それが終端節点(原始問題)である2) 子節点が全て解ける AND 節点であるよ

うな非終端節点であるか、または3)子節点が OR 節点でそのうち少なくと

も一つが解ける

Page 30: 人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

• 解けない節点の条件1) 子節点のない非終端節点(どの作用素も適用できないような非原始問題)

2) その子節点が AND 節点で、そのうち少なくとも一つが解けないような非終端節点

3)その子節点が OR 節点で、その全てが解けないような非終端節点

Page 31: 人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

問題の分解:ゲームの手の決定• ゲームの木:チェスや碁等の特徴:交互にプレ

イする二人のプレーヤが参加し、最良の手を打つ、というゲームに対してその全ての可能な手が表現されている.

• 状態空間木との違いは、プレーヤが交互に選択すること: root は初期状態で第1のプレーヤの手番、次の子節点は第 1 のプレーヤが一手で到達できる状態、その次の子節点は第2のプレーヤの応手で作られる状態。終端節点は、勝、負、引分けのいずれか

• AND/OR木で表現できる( A の立場からは自分の手番は OR で選べるが相手の手番は AND に対応)

Page 32: 人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

例 :tic-tac-toe (3目並)

***

***

**X

***

**X

***

***

***

***

***

*X*

***

***

*X*

**O

***

*X*

*O*

*X*

*X*

*O*

***

*XX

*O*

***

*X*

*OX

**X

*X*

*O*

O**

*X*

*OX

**X

OXX

*O*

*X*

*X*

OOX

**X

*X*

OO**X*

*X*

OO*

***

*XX

*O*

**X

*X*

OOX

**X

*XO

OOX

X*X

*XO

OOX

X勝

O**

*XX

*OX

O*O

*XX

*OX

O*O

XXX

*OX

X勝

***

OXX

*O*

X勝

OX*

*X*

OOX

OX*

XX*

OOX

OX*

XXO

OOX

引分

***

*X*

X*O

***

XX*

**O

***

*X*

*XO

X**

*X*

**O

X**

*X*

O*O

X**

*X*

OXO

XO*

*X*

OXO

XO*

*XX

OXO

XO*

OXX

OXO

全部引分

*O*

*X*

*XO

*O*

XX*

*XO

*O*

XXO

*XO

*OX

XXO

*XO

*OX

XXO

OXO

***

XXO

**O

**X

XXO

**O

**X

XXO

O*O

**X

XXO

OXO

*OX

XXO

OXO

**O

*X*

X*O

**O

OXX

X*O

**O

OXX

XXO

*OO

OXX

XXO

XOO

OXX

XXO

Page 33: 人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

例 :tic-tac-toe (3目並)

***

***

**X***

**X

***

***

***

***

***

*X*

***

***

*X*

**O***

*X*

*O*

X勝

X勝引分

全部引分 *X*

*X*

*O*

X**

*X*

*O*

***

XX*

*O*

***

*X*

XO*

*X*

*X*

OO*

*X*

OX*

*O*

OX*

*X*

*O*

OX*

*X*

XO*

OXO

*X*

XO*

OXO

*XX

XO*

OXO

OXX

XO*

*X*

OX*

XO*

*XO

OX*

XO*

*XO

OXO

XO*

*XO

OXO

XOX

OXO

OXO

XOX

*X*

*X*

OOX

OX*

*X*

OOX

OX*

XX*

OOX

OX*

XXO

OOX

X**

*X*

*OO

X**

*X*

XOO

X**

OX*

XOO

***

XXO

*O*

***

XXO

*OX

O**

XXO

*OX

O*X

XXO

*OX

O*X

XXO

OOX

**O

*X*

XO*

X*O

*X*

XO*

X*O

OX*

XO*

X*O

OX*

XOX

X**

*X*

**O

***

XX*

**O

***

*X*

X*O

***

*X*

*XO

*O*

*X*

*XO

*OX

*X*

*XO

***

XXO

**O

**X

XXO

**O

**X

XXO

O*O

**X

XXO

OXO

*OX

XXO

OXO

X**

*X*

*OO

**O

*X*

X*O

**O

*XX

X*O

**O

OXX

X*O

*XO

OXX

X*O

*XO

OXX

XOO

全部引分

X**

*X*

XOO

X*O

*X*

XOO

X*O

*XX

XOO*OX

*X*

OXO

*OX

XX*

OXO

*OX

XXO

OXO

X*O

OXX

XOO

Page 34: 人工知能 問題の分解、 AND/OR ゲームの手の決定 Lecture 6

例 :tic-tac-toe (3目並)

***

***

**X

***

**X

***

***

***

***

***

*X*

***

***

*X*

**O

***

*X*

*O*

*X*

*X*

*O*

***

*XX

*O*

***

*X*

*OX

**X

*X*

*O*

**X

OXX

*O*

X*X

*XO

OOX

X勝

O*O

XXX

*OX

X勝X勝

OX*

XXO

OOX

引分

全部引分