340 likes | 403 Views
Learn about problem decomposition, AND/OR game strategies, heuristic searches, and A* algorithm in AI. Understand problem representation and basic search algorithms.
E N D
人工知能問題の分解、AND/ORゲームの手の決定Lecture 6 田中美栄子
第一部のおさらい • 問題の定式化: オペレータ:今の状態→次の状態 • 探索アルゴリズム(知識を用いない探索) depth-1st, breadth-1st , 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) 2 (3,2) (1,4) (3,4) (3,2) (3,1) (2,2) 4 (3,3) (4,4) (3,1) (1,1)
探索の基本アルゴリズム • 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→E→G S(1,1) • S(1,1)からG(4,4)へ (3,4) (4,4) (2,4) A(2,3) (1,4) B(2,4) C(2,2) (2,3) (3,3) 2 H(3,2) D(1,4) E(3,4) (3,2) I(3,1) (2,2) 4 F(3,3) G(4,4) (3,1) (1,1)
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)6 • S(1,1)からG(4,4)へ (3,4) (4,4) (2,4) A(2,3)3 (1,4) B(2,4)2 C(2,2)4 (2,3) (3,3) 2 H(3,2) D(1,4)3 E(3,4)1 (3,2) I(3,1) (2,2) 4 F(3,3) G(4,4)0 (3,1) (1,1)
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)6 • S(1,1)からG(4,4)へ (3,4) (4,4) (2,4) A(2,3)3 (1,4) B(2,4)2 C(2,2)4 (2,3) (3,3) 2 H(3,2) D(1,4)3 E(3,4)1 (3,2) I(3,1) (2,2) 4 F(3,3) G(4,4)0 (3,1) (1,1)
比較:深さ優先、幅優先、A* open list Counter D-1stB-1stA* 1 SSS(6) 2 AA A(6) 3 BCBCB(6)C(8) 4 DECCDEE(6)D(8)C(8) 5 ECDEHIG(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.ABC2._ 3._ 1.BC2._ 3.A 1.C2.B3.A 1.C2.AB3.__ 1.__ 2.AB3.C 1. A2.B3.C 1. A2. _ 3.BC 1.__ 2.__ 3. ABC 高さ2の山を1.から2. へ移す 高さ1を1.から3.へ 高さ2の山を2.から3. へ移す
円盤をN個に増やしても右の3段階 1.AB..C2._ 3._ 1.C2. 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へ移す 原始問題:高さ1の山を柱1から柱3へ移動 小目標:高さ2の山を柱1から柱2へ避難させる 小目標:高さ2の山を柱2から柱3へ移す 高さ1の山を柱3から柱2へ移動 高さ1の山を柱1から柱3へ移動 高さ1の山を柱1から柱2へ移動 高さ1の山を柱1から柱3へ移動 高さ1の山を柱2から柱3へ移動 高さ1の山を柱2から柱1へ移動
ハノイの塔(N=2)始→中1→中2→終 始 中1 中2 終
ハノイの塔(N=2)は中間2ステップ 始状態(大小円盤が軸1にある) 大円盤を軸1に残し小円盤を軸2に移動 大円盤を軸3に移動し小円盤は軸2 終状態(大小円盤が軸3にある)
ハノイの塔(N=3)始→中1→中2→終 始 始→1’→2’→中1 中1 中2 終 中2→1”→2”→終
ハノイの塔(N=3)始→中1→中2→終 始 中1 中2 終
ハノイの塔(N=3)は中間6ステップ(中間2ステップの前後に各々下部中間2ステップ)ハノイの塔(N=3)は中間6ステップ(中間2ステップの前後に各々下部中間2ステップ) 始状態(大中小が軸1にある) 中を軸2に移す小は軸3、大は軸1 小を軸3に移す。大中は軸1のまま 大は軸1.中小は軸2 大を軸3に移動し中小は軸2 小を軸1に中は軸2、大は軸3 小は軸1、大中は軸3 終状態(大中小円盤が軸3にある)
ハノイの塔(N=4)始→中1→中2→終 始 1 2 終
ハノイの塔(N=4)始→中1→中2→終 始 1 2 終
ハノイの塔(N=4)は中間14ステップ 始状態(大中小が軸1にある) 小を軸3に移す。大中は軸1のまま 中を軸2に移す小は軸3、大は軸1 大は軸1.中小は軸2 大を軸3に移動し中小は軸2 小を軸1に中は軸2、大は軸3 小は軸1、大中は軸3 終状態(大中小円盤が軸3にある)
ハノイの塔(N=5)始→中1→中2→終 始 中1 中2 終
問題 • N=5のハノイの塔は始状態と終状態の間に何ステップ余分に必要か? • N円盤のハノイの塔は始状態と終状態の間に何ステップ余分に必要か?
Nilsson(1971)によるAND/ORグラフ 1)各節点は単一問題か一連の問題であり、グラフは開始節点(元問題)を含む. 2)終端節点(原始問題)=葉 3)問題Pに対しこれを一組の副問題に変える作用素があり、これを適用した結果生じる副問題に対応する節点へ向かって有向枝がある.このいずれかの子節点が解かれたときPが解けるのなら、OR節点(OR-node) 、全ての子節点が解かれたときPが解けるのならAND節点(AND-node)とよぶ.AND節点には枝を水平線で結ぶ
開始問題が解けるかどうかを示すグラフ(or,木)を解グラフ(解木)という開始問題が解けるかどうかを示すグラフ(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勝
例:tic-tac-toe(3目並) 全部引分 X勝 引分 X勝 全部引分
例:tic-tac-toe(3目並) 全部引分 引分 X勝 X勝 X勝