第2部:問題の分解、AND/OR

Download Report

Transcript 第2部:問題の分解、AND/OR

09人工知能
Lecture 5:
May11, 2009
問題の分解、AND/OR
ゲームの手の決定、ミニマックス枝狩り
第一部のおさらい
• 問題の定式化:
オペレータ:今の状態→次の状態
• 探索アルゴリズム(知識を用いない探索)
depth-1st, breadth-1st , optimal
• ヒューリステック探索:
• 小テスト1
A*-algorithm
ロボットの迷路抜け
• (1,1)から(4,4)へ
(1,1)
3
(2,4)
(1,4)
(2,3)
(3,4)
(4,4)
(2,3)
(2,4)
(3,3)
(2,2)
2
(3,2)
(1,4)
(2,2)
(3,4)
(3,2)
(3,1)
4
(4,4)
(1,1)
(3,1)
(3,3)
探索の基本アルゴリズム
•
•
•
•
•
•
•
•
Search algorithm{
1.初期節点をopenリストに入れる
2. if(open==empty)break;(探索失敗)
3. n=first(open);
4. if(goal(n))print(n);break;(探索終了)
5. remove(n,open);
6. 次に調べる節点をopenに入れる
7. 2へもどる}
例題:S→A→B→D→E→G
• S(1,1)からG(4,4)へ
(2,4)
(1,4)
(2,3)
(3,4)
S(1,1)
(4,4)
A(2,3)
B(2,4)
(3,3)
C(2,2)
2
H(3,2)
D(1,4)
(2,2)
E(3,4)
(3,2)
I(3,1)
4
G(4,4)
(1,1)
(3,1)
F(3,3)
Heuristic search
• 最良優先探索:best-first-search
• 各節点からゴールまでのコスト(距離)h(n)が
予想出来るとき使える
• ステップ6で予想値h’(n)の昇順に並べる
ヒューリスティック探索の問題点
• ヒューリスティック関数(h’)の推定が悪いと、失敗
• 例:迷路の問題
h’=|Ax ー Gx|+|Ay ー Gy|
経路のつながり具合によって成功することもあり、
失敗することもある。(使えるヒント:正しい保障はない)
こういうヒントを多用して解を発見
ヒューリスティック
h=|nのx座標-Gのx座標|+| nのy座標-Gのy座標|
• S(1,1)からG(4,4)へ
(2,4)
(1,4)
(2,3)
(3,4)
(3,3)
S(1,1)6
(4,4)
A(2,3)3
B(2,4)2
C(2,2)4
2
H(3,2)
D(1,4)3
(2,2)
E(3,4)1
(3,2)
I(3,1)
4
G(4,4)0
(1,1)
(3,1)
F(3,3)
A*ーアルゴリズム
•
•
•
•
•
•
•
A*-search algorithm{
1.初期節点をopenリストに入れる
2. 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を展開し、全ての子節
点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)へ
(2,4)
(1,4)
(2,3)
(3,4)
(3,3)
S(1,1)6
(4,4)
A(2,3)3
B(2,4)2
C(2,2)4
2
H(3,2)
D(1,4)3
(2,2)
E(3,4)1
(3,2)
I(3,1)
4
G(4,4)0
(1,1)
(3,1)
F(3,3)
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
1. BC
1.
C
1. C
2. _
2. _
2. B
2. AB
3._
3. A
3. A
3.__
高さ2の山を1.
から2. へ移す
高さ1を1.から3.へ
1.__
1. A
1. A
1.__
2. AB
2. B
2. _
2.__
3. C
3. C
3. BC
3. ABC
高さ2の山を2.
から3. へ移す
円盤をN個に増やしても右の3段階
1.AB..C
1. C
2. _
3._
高さN-1の山
を1.から2. へ
2. AB.. 3.__
高さ1を1.から3.へ
1.__ 2. AB..
3. C
高さN-1の山
を2.から3. へ
1.__ 2.__ 3. ABC
目標:高さ3の山を柱1から柱3へ移す
小目標:高さ2の
山を柱1から柱2
へ避難させる
原始問題:高さ
1の山を柱1か
ら柱3へ移動
高さ1の
高さ1の 山を柱3
高さ1 山を柱1 から柱2
の山を から柱2 へ移動
柱1か へ移動
ら柱3
へ移動
小目標:高さ2の
山を柱2から柱3
へ移す
高さ1の山を
高さ1の山 柱2から柱3
を柱2から へ移動
柱1へ移動
高さ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 * *
* * *
* * *
全部引分
O
*
*
*
X
*
*
*
X
O
*
*
*
X
*
O
*
X
O
*
*
X
X
*
O
*
X
O
*
*
X
X
O
O
*
X
O
X
*
X
X
O
O
*
X
O
X
*
X
X
O
O
O
X
O X *
* X *
* * *
O X *
* X *
* O *
O X *
* X X
* O *
O X *
O X X
* O *
O X *
O X X
X O *
O X O
O X X
X O *
O * *
* X X
* * *
O * *
O X X
* * *
O * *
* X *
* * *
O
*
*
O
*
O
*
X
*
*
X
*
* O *
* X *
* * *
X
*
*
X
*
*
O * *
O X X
X * *
O * O
O X X
X * *
O X O
O X X
X * *
O X O
O X X
X O *
O
X
O
O
X
O
O
X
O
O
X
O
*
X
*
X
X
*
X
X
O
X
X
O
* * *
X * *
* * *
X
O
*
X
O
*
X
O
*
X
O
X
* O *
* X *
X * *
X O *
* X *
* * *
* O O
* X *
X * *
X O *
* X *
* * O
* O *
X X *
* * *
X O O
* X *
X * *
X O *
X X *
* * O
* O *
X X O
* * *
X O O
O X *
X * *
X O *
X X *
O * O
X O O
O X *
X * X
X勝
X O *
X X X
O * O
X勝
* O *
X X *
* * *
* O *
* X *
* X *
* O O
* X *
* X *
X O O
* X *
* X *
X O O
* X *
* X O
X O O
* X X
* X O
* O *
X X O
X * *
X勝
X O O
O X X
* X O
引分
例:tic-tac-toe(3目並)
* * *
* * *
* * *
X * *
* * *
* * *
* * *
X * *
* * *
* * *
* X *
* * *
* O *
* X *
* * *
O * *
* X *
* * *
O X *
* X *
* * *
O X *
* X *
* O *
O X *
* X *
X O *
O
*
X
O
*
X
O
O
X
X
X
O
X
X
O
X
X
O
O
*
*
O
X
*
O
X
*
O * *
* X *
* * X
O * *
* X X
* * *
O O *
* X *
* * X
O * *
O X X
* * *
O O X
* X *
* * X
O * *
O X X
X * *
O O X
* X *
O * X
O O X
X X *
O * X
O O X
X X O
O * X
O * O
O X X
X * *
O
O
X
O
O
X
X
X
*
X
X
O
O
X
*
O
X
*
O
*
*
O
*
O
*
X
*
*
X
*
X
*
*
X
*
*
O * X
X X *
O * *
O * X
X X O
O * *
O * X
X X O
O X *
O O X
X X O
O X *
全部引分
全部引分
* O *
* X *
* X O
*
*
*
*
*
O
O
X
X
O
X
X
X
*
O
X
*
O
* O X
X X *
O X O
* O X
X X O
O X O
* O *
* X *
* X *
*
*
*
*
*
*
*
*
O
*
O
O
X
O
O
O
X
X
O
X
X
O
X
X
O
X
X
O
X
X
*
O
*
X
O
*
X
O
*
X
O
*
X
O
*
X O X
O X O
O X O
* O O
* X *
* X *
X O O
* X *
* X *
X O O
* X *
* X O
X O O
* X X
* X O
X O O
O X X
* X O
*
*
*
O
*
*
O
*
*
O
X
*
O
X
*
O
X
*
*
*
X
*
*
X
X
*
X
O O X
* X O
* * X
X勝
* O *
* X X
* * *
* O *
O X X
* * *
X O *
O X X
* * *
X O *
O X X
* * O
X O *
O X X
X * O
X O O
O X X
X * O
引分
* O X
* X *
* * *
* O X
* X *
O * *
* O X
* X *
O * X
* O X
* X O
O * X
X O X
* X O
O * X
X勝
例:tic-tac-toe(3目並)
* * *
* * *
* * *
* * *
* X *
* * *
X * *
* * *
* * *
* * *
X * *
* * *
O * *
* X *
* * *
* O *
* X *
* * *
全部引分
* O *
* X *
X * *
X O *
* X *
* * *
* O *
X X *
* * *
X O ** O *
X X XX X O
O * OX * *
X O O
O X *
X * X
X勝
X勝
X勝
* O *
* X *
* X *
X O O
O X X
* X O
引分
ミニマックス法
アルファ・ベータ法
1
2
自身が選択
ミニマックス法
アルファ・ベータ法
1
2
相手が選択
ミニマックス法
アルファ・ベータ法
1
αβ(3)=(5,5)
7
8
9
3
5
4
2
ミニマックス法
アルファ・ベータ法
αβ(1)=(?,5)
1
αβ(3)=(5,5)
7
8
9
3
5
4
2
ミニマックス法
アルファ・ベータ法
αβ(1)=(?,5)
1
2
αβ(3)=(5,5)
αβ(4)=(?,5)
7
8
9
3
5
4
10
11
12
4
5
7
ミニマックス法
アルファ・ベータ法
αβ(1)=(?,5)
1
2
αβ(3)=(5,5)
αβ(4)=(4,5)
7
8
9
3
5
4
10
11
12
4
5
7
ミニマックス法
アルファ・ベータ法
αβ(1)=(?,5)
1
2
αβ(3)=(5,5)
αβ(4)=(5,5)
7
8
9
3
5
4
10
4
11
5
12
7
調べなくてもよい
ミニマックス法
アルファ・ベータ法
αβ(1)=(5,5)
1
2
αβ(3)=(5,5)
αβ(4)=(5,5)
7
8
9
3
5
4
10
4
11
5
12
7
調べなくてもよい
αβ(S)=(5,?)
1
αβ(1)=(5,5)
ミニマックス法
アルファ・ベータ法
2
αβ(S)=(5,?)
1
αβ(1)=(5,5)
ミニマックス法
アルファ・ベータ法
2
αβ(2)=(?,5)
ミニマックス法
アルファ・ベータ法
αβ(S)=(5,?)
αβ(1)=(5,5)
1
2
αβ(2)=(?,5)
αβ(5)=(4,4)
13
14
15
4
3
2
αβ(S)=(5,?)
ミニマックス法
アルファ・ベータ法
1
2
αβ(2)=(?,4)
αβ(5)=(4,4)
13
14
15
4
3
2
?
Sのαより小さいの
で,これ以上探索を
行わなくてもよい