探索木、宣教師、コイン


探索 (search)



グラフの例

タビュラー方式 (tabular method)

『データ工学』の授業で説明

  • 初期状態をテーブルに登録する
  • 生成したサブゴール(副目標)がテーブルに登録されていれば実行しない
  • 登録されていなければサブゴールをテーブルに登録する


復習

以下の2つのゲームにはどのような探索を用いたらよいか、説明しなさい。

  • カードゲーム

    1から7の数字を書いたカードが2枚ずつ計14枚ある。
    そしてこれを1列に並べ,

    • 2枚のnの間にはカードがn枚 (1≦n≦7)

    はさまれるように14枚のカードを並べて下さい。





  • 5パズルゲーム

         


宣教師と人食い人種

各3人の宣教師と人食い人種が川の右岸から左岸に一隻のボートで無事に渡るには どうしたらようか。ただしボートには一度に二人しか乗れず、また宣教師の数が 人食い人種より少なくなると危害が加えられる。

     初期状態      目標
     ┃   ┃    ┃   ┃
  ○○○┃   ┃    ┃   ┃ ○○○
  ×××┃=  ┃    ┃  =┃ ×××
     ┃   ┃    ┃   ┃
  • 問題表現:右岸での宣教師、人食い人種、ボートの数で表現
    初期状態;(3,3,1) ⇒⇒⇒ 最終状態:(0,0,0)

  • 探索木(search tree)
    枝の関係は互いにORの関係になっているのでOR木とも呼ぶ。

  • 状態の種類
    • すべての状態:4×4×2=32
    • 食べられる状態:(2,1,*),(2,0,*),(1,0,*),(1,2,*),(1,3,*),(2,3,*)
    • ありえない状態:(3,3,0),(0,0,1)


  • 状態遷移(有限オートマトン)
    
    
         (3,3,1)	    ○○○×××=
     ┏━━━━╋━━━━┓
    (3,2,0)   ┃    ┃  ○○○××  ×=
         (3,1,0)   ┃  ○○○×   ××=
          ┃  (2,2,0)  ○○××   ○×=
          ┗━┳━━┛
           (3,2,1)	   ○○○××= ×
            ┃
           (3,0,0)	   ○○○    ×××=
            ┃
           (3,1,1)	   ○○○×=  ××
            ┃
           (1,1,0)	   ○×     ○○××=
            ┃
           (2,2,1)	   ○○××=  ○×
            ┃
           (0,2,0)	   ××     ○○○×=
            ┃
           (0,3,1)	   ×××=   ○○○
            ┃
           (0,1,0)	   ×      ○○○××=
          ┏━┻━━┓
         (1,1,1)   ┃  ○×=    ○○××
          ┃  (0,2,1)  ××=    ○○○×
          ┗━┳━━┛
           (0,0,0)	          ○○○×××=
    
    
    (3,3,1)┳(3,2,0)
           ┣(3,1,0)┳(3,2,1)━(3,0,0)━(3,1,1)━(1,1,0)┓
           ┗(2,2,0)┛                  ┃
       ┏━━━━━━━━━━━━━━━━━━━━━━━━┛
    (2,2,1)━(0,2,0)━(0,3,1)━(0,1,0)┳(1,1,1)┓
                      ┗(0,2,1)┻(0,0,0)
    
    探索木と有向グラフ/有限オートマトン
    
    
    状態空間探索(state-space search)


嫉妬深い夫

  • 2組の夫婦が川を渡ろうとした。
  • あいにく2人乗りのボートが1つしかない、船頭もいないし、橋もないので、 自分たちで漕いで渡るしかない。
  • しかしボートが漕げるのは男だけである。
  • ところが夫2人は嫉妬深く、 ボートの中にしろ、川岸にしろ、自分がいないときに妻が他の男と一緒にいるのを 許さない。
  • 最小の往復回数でめでたく2組の夫婦が川を渡るにはどうすればよいか。


初期状態      					目標状態
           ┃   ┃	┃   ┃
夫1,妻1,夫2,妻2┃ボ  ┃	┃  ボ┃夫1,妻1,夫2,妻2
           ┃   ┃	┃   ┃

可能な渡り方
	夫1
	夫2
	夫1,妻1
	夫2,妻2
	夫1,夫2
嫉妬条件
	夫1,妻2
	夫2,妻1

解は2つ


農夫と山羊と狼とキャベツの問題
  • 農夫が狼と山羊とキャベツを持って川の左岸にいます。
  • 農夫はこれらを川の右岸へ運ばなければいけませんが、ボートにはそのうちのひとつしか乗せることができません。
  • 狼は山羊を好んで食べるため、この 2 つを同じ岸に残すことはできません。
  • また、山羊はキャベツを好んで食べるため、この 2 つも同じ岸に残すことはできません。


三つのコイン

表、裏、表とコインを3枚並べる。 1回に3枚のうち2枚だけをひっくり返すものとして、ちょうど3回で、 すべてのコインが表または裏になるようにするにはどのようにすればよいか。

  • 問題表現:表○、裏×

  • 状態:2=8通り

  • 操作:2枚をひっくり返す
    • ○○⇒××(2⇒0)
    • ○×⇒×○(1⇒1)
    • ××⇒○○(0⇒2)


  • 状態の表(○)の数を数える
    • 0⇒2⇒0、2⇒2
    • 1⇒3⇒1、1⇒1


  • 状態遷移
    
     ┏━━○×○━━┓    ┏━━×○×━━┓
     ┃   ┃   ┃    ┃   ┃   ┃
    ×○○━━╋━━×××  ○××━━╋━━○○○
     ┃   ┃   ┃    ┃   ┃   ┃
     ┗━━○○×━━┛    ┗━━××○━━┛
    


n枚のコイン

n枚のコインが表または裏で並べられている。 1回に2枚だけをひっくり返すものとして、ちょうどn回で、 すべてのコインが表または裏になるようにするにはどのようにすればよいか。



まとめ

  • 問題の表現
    • 状態:初期、目標
    • ゲームの規則の明示化
    • 探索木、状態遷移(有限オートマトン)
      必ずしも有限オートマトンで表現できない


  • 探索木の探索法
    • 盲目的探索法
    • 深さ優先(縦型)探索法
    • 幅優先(横型)探索法
    • 反復深化法


  • 探索の効率化
    • 重複計算の除去
    • ルールの発見
    • 経験的知識(ヒューリスティックス)の利用
      必ずしも解が得られない


8パズル

空白の隣にある駒を移動して初期状態から目標状態にせよ

【初期状態】   【目標状態】
┏━┳━┳━┓  ┏━┳━┳━┓
┃1┃2┃3┃  ┃1┃2┃3┃
┣━╋━╋━┫  ┣━╋━╋━┫
┃4┃5┃6┃  ┃4┃5┃6┃
┣━╋━╋━┫  ┣━╋━╋━┫
┃7┃8┃ ┃  ┃8┃7┃ ┃
┗━┻━┻━┛  ┗━┻━┻━┛

┏━┳━┳━┓
┃x1┃x2┃x3┃
┣━╋━╋━┫
┃x4┃x5┃x6┃
┣━╋━╋━┫
┃x7┃x8┃x9┃
┗━┻━┻━┛
  1. x1=S のとき
    (S,x2,x3,…,x9) →(x2,S,x3,…,x9)
              →(x4,x2,x3,S,x5,…,x9)
  2. x2=S のとき
    (x1,S,x3,…,x9) →(S,x1,x3,…,x9)
              →(x1 ,x3,S,x4,…,x9)
              →(x1,x5,x3,x4,S,x6,…,x9)
  3. x5=S のとき
    (x1,…,x4,S,x6,…,x9) →(x1,S,x3,x4,x2,…,x9)
                 →(x1,x2,x3,S,x4,…,x9)
                 →(x1,…,x4,x6,S,x7,…,x9)
                 →(x1,…,x4,x8,x6,x7,S,x9)


15パズル15puzzle.exe

DNA

A, C, G, T の4文字からなる文字列が与えられている。この中での、部分文字列の出現回数を数え、最も頻繁に出現する部分文字列の出現回数順に並べなさい。

4分探索木


ボナンザ

2007.4.21 NHK BS2 21:30-23:00
「運命の一手 渡辺竜王VS人工知能ボナンザ 注目の将棋」

  • 第16回世界コンピュータ将棋選手権にて、Bonanzaが優勝
    http://www.magnolia.co.jp/bona.html
  • コンピュータ将棋協会
    http://www.computer-shogi.org/
  • 情報処理学会誌 2006年8月, Vol.47, No.8
    特集「コンピュータ将棋の新しい動き」
    0編集にあたって
    久門耕一, 873-874ページ
    1.「全幅探索」と学習による新感覚のコンピュータ将棋の成功とその高速アルゴリズムの及ぼす影響
    瀧澤武信, 875-881ページ
    2今年の選手権を観戦した女流プロとしての戸惑い
    安食総子, 882-883ページ
    3.コンピュータ将棋における全幅探索と futility pruning の応用
    保木邦仁, 884-889ページ
    4.コンピュータは本当に名人を超えられるか─Bonanzaの活躍
    飯田弘之, 890-892ページ


ナンプレ(数独) http://www5b.biglobe.ne.jp/~mint_hs/soft/sudok/index.html

 4  2  1 
 8  3  7 
 5  6  9 
 3  9  8 
 6  4  5 
 1  7  2 
 5  6  7 
 1  9  2 
 3  8  4 
 6  1  8 
 2  9  4 
 3  7  5 
 7  3  4 
 5  8  1 
 9  2  6 
 2  5  9 
 6  7  3 
 4  1  8 
 9  5  3 
 7  8  6 
 1  4  2 
 4  6  7 
 2  1  3 
 8  5  9 
 8  2  1 
 9  4  5 
 7  3  6 



         
         
         
         
 1     8 
 6       
    3  9 
         
    2    
    2  4 
         
    9    
    9    
 5       
         
         
 6       
         
 6     1 
         
 8       
         
    2    
         
 4       
    7    
         
─────────────→
必ず答えがあり
一意的であること
 7  6  8 
 2  5  9 
 4  1  3 
 2  5  4 
 1  3  8 
 6  7  9 
 1  3  9 
 7  6  4 
 5  2  8 
 1  2  4 
 3  8  7 
 5  9  6 
 7  9  6 
 5  4  2 
 8  1  3 
 3  8  5 
 6  9  1 
 2  4  7 
 6  3  1 
 9  4  5 
 8  7  2 
 9  8  7 
 3  2  1 
 4  6  5 
 4  5  2 
 8  7  6 
 9  1  3 



発見的アルゴリズム
実装 http://www2.tokai.or.jp/deepgreen/shortnotes/numberplace/index.htm



パズル1パズル2