22 January 2021

    自分のアプリと他のアプリを手動で対戦させてみた

     以前の記事で6×2列のマンカラが先手必勝なのか後手必勝なのかを自作プログラムで調べましたが、時間がかかり過ぎるので結論が得られないままでした。そこで自分のアプリと他の強いアプリを対戦させてみて、その結果から石の数(豆の数)毎に先手必勝なのか後手必勝なのかを推測してみようと思います。
     google playに公開されているマンカラアプリの中で、マンカラカラハ(classicルール1)で遊ぶことが出来て、初期配置の石の数を3個から7個まで選択出来るアプリを3つ選んで、先手・後手の対戦結果から推測します。どのアプリと比較したかは別に公開しても構わないと思うのですが、もしかしたら作者に歓迎されない可能性もあるので使用したアプリ名は一応伏せておきます。また比較する時はアプリの強さ設定で全て最強に設定して比較しています。

    対戦成績

     自分のアプリは対戦結果を先手・後手別に記録出来る様にしているの2で、そのスクリーンショットを以下に並べます。※画像クリックで拡大表示

    * 豆3つの対戦成績

    豆3つ

    * 豆4つの対戦成績

    豆4つ

    * 豆5つの対戦成績

    豆5つ

    * 豆6つの対戦成績

    豆6つ

    * 豆7つの対戦成績

    豆7つ

     対戦成績表の見方ですが、マンカラナッツではやばいモード以外では初手をランダムに決めるようにしていて、勝負に拘っていないので、アプリが勝てるのかどうかを判断する場合はやばいモード以外は見る必要がありません。勝ちの欄の数字はAI対戦で人間側が勝った数字、つまり比較対象となっているアプリが勝ったということです。また比較するために選んだアプリが初手をランダムに決めているものもあるので、一回だけの対戦ではなく何回か対戦させました。
     注目すべきは黄色い丸で囲んだ部分の数字です。後手で勝つことが出来るかです。豆の数が3、4、5、7の時は後手の勝ち星が全て0で、比較対象のアプリが後手の場合は、何度やっても自分のアプリに勝てません。自分のアプリが数あるマンカラアプリの中で最強だと主張しているのではなく、マンカラカラハというゲームはお互いが最善を尽くせば先手必勝なのではないか?ということです。負けの欄の数字(比較対象のアプリが負けた数字=自分のアプリが勝った数字)を見ると、勝ちの欄の数字より大きいので勝率は良い方だと思いますが、先に言ったように比較対象のアプリは初手をランダムに決めている(=勝負に拘ってない)ものもあるので一概には言えません。マンカラでは初手で悪手を選択するとそれだけで勝てなくなるような気がします。
     また豆の数が6の時は先手でも後手でも勝ったり負けたりなので、どちらとも言えませんが双方が最善を尽くしたら引分けなのかもしれません。上の対戦成績結果以外で試していた時も引分けになる頻度が結構高かったです。

    結論

     豆の数1の時と2の時は以前の記事で結論が出ていると思っているので、以下のように推測します。

    豆の数
    カラハClassic 先手必勝 先手必勝 先手必勝 先手必勝 先手必勝 引分け? 先手必勝

     強さの比較に使用したアプリも自分のアプリもおそらく似たような評価関数と、MIN-MAX法及びαβ法を使った先読み探索で指し手を決めていると思うので、この推測が絶対正しいとは言えません。先読みの手数に制限があるからです。
     今将棋や囲碁で流行っている機械学習(Deep Learning等)によるAIだと違う指し手を選んで全てのマンカラアプリに後手でも勝つなんてことがないとは言い切れませんが、マンカラは将棋や囲碁に較べたら変化の幅が狭いので、将棋や囲碁のように劇的な強さの向上はないでしょう。でも誰か試している人はいないのでしょうか?機械学習を使ったらどうなるか、ちょっと興味あります。
     機械学習(強化学習)を使った三目並べアプリでは、結局MIN-MAX法を使ったものと同じ結果(双方が最善を尽くせば常に引分け)になるので、マンカラの場合も結局同じ結果が得られるだけかもしれません。


    1. カラハのclassicルールについては以前の記事を見て下さい。 

    2. 先手・後手別の対戦結果を自分が知りたかったのでこの機能を付けました。 



    blog comments powered by Disqus