モンテカルロ木探索を実装した

10000回のUCBなモンテカルロでも全然弱いな、って言っていた局面で1000回のUCTでテストプレイしていてけっこう悩まされている。

コンピュータ、初手AddBitでBombに置くのは今まで通り。

    AddBit [1, 0] []
   MoveBit [1, 0] []
 RemoveBit [1, 0] []
     Crack [1, 0] []
      Bomb [1, 0] [1]

全然成長してないな、とか思いながら今まで通りAddBitでRemoveBitに置いたら、次のMoveBitでRemoveBitのビットをMoveBitに移動された。むむ、嫌な手を打つなぁ。

    AddBit [1, 0] []
   MoveBit [1, 0] [0]
 RemoveBit [1, 0, None] []
     Crack [1, 0] []
      Bomb [1, 0, 1] []

考える。次のRemoveBitでRemoveBitのビットを消されると残りのダメージを軽減する手段がなくなって死ぬので、この時点で対処する必要がある。BombのビットをMoveBitに移動。

    AddBit [1, 0] []
   MoveBit [1, 0, 0, 1] []
 RemoveBit [1, 0] []
     Crack [1, 0] []
      Bomb [0, 1] []

AIはRemoveBitでRemoveBitのビットを消すかと思いきや、Crackを消してきた。むむ?

    AddBit [1, 0] []
   MoveBit [1, 0, 0, 1] []
 RemoveBit [1, 0] []
     Crack [1, None] []
      Bomb [0, 1] []

とりあえず順当にBombのビットを消す。順番に発動して8:6。2点リード。AIはまたしてもAddBitでBombに乗せてきた。

    AddBit [1, 0] []
   MoveBit [1, 0, 0, 1] []
 RemoveBit [1, 0] []
     Crack [1] []
      Bomb [] [1]
life: [8, 6]

むむ、即死ではないが、、MoveBitの僕のビットの片方は無効化されるとして、残りの一つでMoveBitを無効化したらRemoveBitでRemoveBitを消されるし、無効化しなければやった変更を戻すことができるから実質僕のが無効化された上にRemoveBitされるだけだし、、僕だけ2点のダメージを食らうことが避けられない??

と、長考し過ぎだからRemoveBitにビットを乗せておくか。最悪でもまだ死ぬまで1周ある。

AIのMoveBit。MoveBitの4番目のビットをBombに移動!むむむ。1番目のを移動した方がいいんじゃないかとか思うけど自信がなくなってきたぞ。書きながらだとついつい長考してしまうから1分タイマー使うか。

    AddBit [1, 0] []
   MoveBit [1, 0, 0, None] []
 RemoveBit [1, 0, 0] []
     Crack [1] []
      Bomb [1] [1]

うん、これはAIの失敗だろう。僕はMoveBitを2回使えるのでRemoveBitとBombから2つのビットを移動。

    AddBit [1, 0] []
   MoveBit [1, 0, 0, 1, 1] []
 RemoveBit [0, 0] []
     Crack [1] []
      Bomb [1] []

そしてRemoveBitだ。この2つのRemoveBitでBombとAddBitを削除。これでAIに勝ち目はないだろう。AddBitでRemoveBitにさらに積んでおく。AIはMoveBitでビットを一つBombに移動。

    AddBit [0] []
   MoveBit [1, 0, 0, 1, None] []
 RemoveBit [0, 0, 0] []
     Crack [1] []
      Bomb [] [1]
life: [6, 6]

僕のターン、MoveBit2つでMoveBitとBombを移動。そしてRemoveBit3連発。

    AddBit [0] []
   MoveBit [0, 0, 1] []
 RemoveBit [0, 0, 0] []
     Crack [] []
      Bomb [] []
life: [6, 6]

MoveBitを無効化しつつRemoveBitで最後のビットを削除して終了。

ふう、なんかだいぶヒヤヒヤした。探索回数1000回だと割と思考が重たくないから10000回にして、盤面もシャッフルして、人間側タイムリミット1分で戦ってみるか。