09 人工知能 lecture 4 : may1, 2009
DESCRIPTION
09 人工知能 Lecture 4 : May1, 2009. 問題の分解、 AND/OR ゲームの手の決定. 第一部のおさらい. 問題の定式化: オペレータ :今の 状態 →次の 状態 探索アルゴリズム(知識を用いない探索) 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). - PowerPoint PPT PresentationTRANSCRIPT
09 人工知能Lecture 4 :May1, 2009
問題の分解、 AND/OR
ゲームの手の決定
第一部のおさらい• 問題の定式化: オペレータ:今の状態→次の状
態
• 探索アルゴリズム(知識を用いない探索) depth-1st, breadth-1st , optimal
• ヒューリステック探索: A*-algorithm
• 小テスト1
ロボットの迷路抜け• ( 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)
探索の基本アルゴリズム• 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へもどる}
例題: 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)
Heuristic search
• 最良優先探索: best-first-search
• 各節点からゴールまでのコスト(距離) h(n) が予想出来るとき使える
• ステップ6で予想値 h’(n) の昇順に並べる
ヒューリスティック探索の問題点
• ヒューリスティック関数( h’ )の推定が悪いと、失敗
• 例:迷路の問題 h’ =| A x ー Gx |+| A y ー G y|
経路のつながり具合によって成功することもあり、失敗することもある。(使えるヒント:正しい保障はな
い)
こういうヒントを多用して解を発見 ヒューリスティック
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)
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へもどる}
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)
比較:深さ優先、幅優先、 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
Problem reduction representation• 問題を分割し、すぐ解ける副問題の集合に変換
• 許された変換は「オペレータ(作用素)」として定義
• すぐ解ける問題は原始問題 primitive problem とよぶ
• 問題分割を用いた問題表現は、 1.開始問題記述 2,問題を副問題群に変換する作用素 3.原始問題記述の集合
問題分割表現の例:ハノイの塔• 大きさが順に大きくなる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 を載せる
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. へ移す
円盤を 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. へ
目標:高さ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へ移動
Nilsson ( 1971 )による AND/ORグラフ
1)各節点は単一問題か一連の問題であり、グラフは開始節点(元問題)を含む.
2)終端節点(原始問題)=葉3)問題 P に対しこれを一組の副問題に変える作
用素があり、これを適用した結果生じる副問題に対応する節点へ向かって有向枝がある.このいずれかの子節点が解かれたときPが解けるのなら、 OR節点( OR-node) 、全ての子節点が解かれたとき P が解けるのなら AND節点( AND-node)とよぶ .AND 節点には枝を水平線で結ぶ
開始問題が解けるかどうかを示すグラフ( or,木)を解グラフ(解
木)という• 解ける節点の条件として、1)それが終端節点(原始問題)である2) 子節点が全て解ける AND 節点であるよ
うな非終端節点であるか、または3)子節点が OR 節点でそのうち少なくと
も一つが解ける
• 解けない節点の条件1) 子節点のない非終端節点(どの作用素も
適用できないような非原始問題)2) その子節点が AND 節点で、そのうち少
なくとも一つが解けないような非終端節点
3)その子節点が OR 節点で、その全てが解けないような非終端節点
問題の分解:ゲームの手の決定• ゲームの木:チェスや碁等の特徴:交互にプレイ
する二人のプレーヤが参加し、最良の手を打つ、というゲームに対してその全ての可能な手が表現されている.
• 状態空間木との違いは、プレーヤが交互に選択すること: root は初期状態で第1のプレーヤの手番、次の子節点は第 1 のプレーヤが一手で到達できる状態、その次の子節点は第2のプレーヤの応手で作られる状態。終端節点は、勝、負、引分けのいずれか
• AND/OR木で表現できる( A の立場からは自分の手番は OR で選べるが相手の手番は AND に対応)
例 :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
*XX
X*O
**O
OXX
X*O
**O
OXX
XXO
*OO
OXX
XXO
XOO
OXX
XXO
例 :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
例 :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
引分
全部引分