最近,連鎖ゲームのソースに手を入れ始めた.AIを何とか改善できないかと考えている.

具体的には,もっと大きい連鎖を作れるようにできないかというところ.

RensaYomi-7を元にして色々考えているのだが,AIの動きを見ていると,どうも序盤に悪形にはまってしまったためにそれ以上連鎖を伸ばせない,という状況になっている場合が結構ある.

 ABCDEF
0
1
2
3
4
5
6
7
8
9
10
11
12
[地形エディタ]

この例の場合,左下の赤が発火点の10連鎖だが,横の列が絶壁になっているためここから伸ばすことは不可能.発火点を下に残すという悪形になってしまったため,にっちもさっちもいかなくなっている.序盤の積み方でミスると,こういうハメになる.

この肝心の序盤を組み立てるときの考え方だが,今のAI-COMでは

  • 見えているツモ(NEXT〜NEXT3)
  • フィールドの状態

の情報を使って,できるだけ連鎖数が大きくなるようになどの基準(そのアルゴリズムが使っている評価関数によりけり)で,ツモの置き場所を決めている.

しかし,人間が積むときには,これだけの情報だけではないような気がしてきた.

どうも人間は,たとえNEXTに今欲しい色が見えていなくても,そのうち出て来るだろうと予想して,それを前提にして形を組み立てているような気がする.そして後でその色が出てきたら,組み立てた形にはめ込むというイメージだ.

例えば,階段積みで折り返しを先に作っておくというのは,そういう発想だと思う.

つまり,AIが積むときも,

  • 見えているツモ(NEXT〜NEXT3)
  • まだ見えていないツモ

の両方を考えて最適な手を考えれば良い,という考えに至ったのでした.

まぁ,実際にやろうとすると,「まだ見えていないツモ」なんてどう反映すれば良いのか困ってしまうわけですが. 要は,

  • 「自分の都合の良いツモ」がNEXT4以降に出てくると仮定する

んですが,「自分の都合の良いツモ」とは何か?全ての色の組み合わせのうち評価が最も高いツモだとすると,計算量が増えすぎるし.

はてさて.


© 2024 KMIソフトウェア