22 April 2018

    「3三将棋」アプリで入門書の誤りを見つけた

     自作の「3三将棋」アプリの開発も落ち着いてきたので放置していたのですが、小さなバグを見つけたのでどうせ新しいバージョンをリリースするなら、初期配置パターンを何種類か追加しようと思い、参考にするため「9マス将棋の本 (幻冬舎単行本) Kindle版」を買いました。「9マス将棋」のゲーム本体は既に持っていて、そこで紹介されている初期配置パターンは開発時のテストにも使用していました。「3三将棋」アプリに用意している初期配置パターンはこの本に載っているものやTwitterで見かけたもの、自分で考えたものなどいろいろです1。今回も面白い配置パターンを探すために購入したのですが、読み進めていくと思わぬ発見がありました:smile:

    「先手が勝てない」ことはない

     下の初期配置は「9マス将棋の本 (幻冬舎単行本) Kindle版」の最初の方に、飛車と角を左右対称に置き換えた形で紹介されている配置です。

    Arrange02

     本の説明を読んでいるといろんな変化を紹介した後に、この配置は「結論として、第3図の配置では先手が勝てないということになります。」なんて断言されています。本を読んでいるときはふむふむと読んでいたのですが、この配置は既にアプリに用意していたんじゃないか?と思って、アプリを確認してみるとArrange02として左右対称の形で用意していました。ソフトを作り始めた極初期の段階で適当に配置したものだと思います。で、早速AI同士で対戦させてみました。

    AIレベル=弱い・普通

     AIレベルを「弱い」か「普通」にセットすると、初形から3二飛、2二歩、3三玉、1二玉、3一飛成、2三歩成で、本の解説通りに後手が勝ちます(上の画像)。

    AIレベル=長考・瞑想

     でもAIレベルを「長考」か「瞑想」モードにすると、初形から3二飛、2二歩、3三玉、1二玉、2三歩、1三玉、2二歩、2二角、2二飛で、先手勝ちになります(上の画像)。
     本の解説の「先手が勝てない」という結論のどこに問題があるかというと、3二飛、2二歩、3三玉、1二玉と進んだ下の画像の局面で2三に歩を合わせる手が抜けていることです。

    AIレベル=長考・瞑想、途中図

     上の図のように先手が飛車を成らずに2三に歩を合わせると後手としては2三歩成としたくても飛車の利きがあるので歩を成れません。歩を成った瞬間に玉を素抜かれてしまいます。仕方なく後手は飛車の筋を逃れるために1三玉とかわしますが2二の歩をただで取られて後はどう変化しても先手勝ちです。是非「3三将棋」アプリをダウンロードして試してみてください:sweat_smile:
     殊更に本の間違いを責める気はありませんが、自作のAIはやはり良く出来ているなぁと嬉しくなりました:smile:「9マス将棋の本 (幻冬舎単行本) Kindle版」の内容は次の版で改訂されるのでしょうか:sweat_smile:とりあえずブログネタを提供してくれた将棋連盟に感謝します:sweat_smile:

    アタック!9マス将棋

     上記の例以外にも本の解説が本当かどうか納得出来ないケースがあるのですが、説明するのが大変なのでとりあえず触れずにおきます。それより「9マス将棋の本 (幻冬舎単行本) Kindle版」の最後の方に、解説文はないのですがオリジナルの上級編の問題(「アタック!9マス将棋」)として下記の初期配置が紹介されていたので「3三将棋」アプリに解かせてみました。

    上級編の問題の初期配置

     問題の趣旨としては先手が勝つ順を見つけてくださいということだと思います。

    AIレベル=瞑想9手読み

     上のgifファイルの手順(1三角、同歩成、2二角、1二玉、1三角、同玉、3一歩成、1二角、3二玉、2三角成、2一玉、2二馬までで後手勝ち)のように標準のアプリの設定では「瞑想」モードにしていても読みが足りないようで、正解に辿り着けない(=先手が勝てない)ようです。
     そこで、アプリの設定を弄くって特別に深く読むように修正したバージョンで解かせてみたのが以下の手順です。

    AIレベル=瞑想11手読み

     gitファイルの手順は2三玉、2一玉、1三角、同歩成、同玉、3三角、2三歩、3二玉、2二角、同角、同歩、3一玉、2三玉、1二歩、1一角、1三歩成、同玉、3二玉、3三歩、同玉、2一歩成、3二玉、2二角成まで23手で先手勝ちとなります2。問題文のヒントに「決着は20数手後になります。」と書かれていることと合致しますので、おそらくこの手順が正解で間違いないでしょう。
     読みを深くすれば正解に辿り着くというのは先読みルーチンにバグがないということでもあるのでとりあえず安心しました。3三将棋(9マス将棋)の場合、盤面が狭いので本将棋のように玉の囲いの固さとか駒の働きとかの局面の静的評価関数の出来はあまり関係なく、いかに深く読むかが大事です。その点詰将棋に似ていますが、必ず王手を続けなければいけないわけでもないので、気づきにくい手を含めて有り得る全ての手を読む力を鍛えるという点では非常にいい教材になると思います。

    アプリの今後

     他にも本の解説が正しいとして、解説通りではないけど遠回りしながら本と同じ結果になる変わった手をAIが指すケースとかがあって、いろんな変化を確認する意味で本に紹介されている局面をソフトで試すのも面白いものです。自分は知らなかったのですが、9マス将棋カードという9マス将棋用の初期配置だけを紹介した商品もあるようです。解説の内容は知りませんが、ソフトに指させてみるとどうなるか興味がある人もいるんじゃないでしょうか?本に紹介されている初期配置をそのままアプリに組み込むのも問題ありそうだし3こういう商品が出るのであれば、開発当初予定していたように初期配置を自由に編集出来るような機能もあった方がいいよなぁとは思っています。ユーザーが自由に初期配置を設定出来るのなら何の問題もありません。
     で、結局どうするか、ソースはいずれ公開するつもりですが、編集機能を追加してからにするか、もうちょっと様子見します。


    1. 自分で考えた配置では、アプリの読みの深さによって結論が変わるものを一つの基準として採用してます。 

    2. 最新版(Version1.0.1.0)でやってみると、「2三玉、2一玉、1三角、同歩成、同玉、3三角、2三歩、1一角成、3一歩成、同玉、2二角、同馬、同歩、1一歩、2三玉、1二角、3三玉、2一角、同歩成、同玉、3二角、1二玉、3一角、2一歩、2三角」までの25手でした。小さなバグ修正があったので、こちらが正解だと思われます。 

    3. 著作権というのは偽物を排除して本当の作者を保護するためのものなので、本の内容を引用する分には問題ないと思ってますが、いろいろ言ってくる人が出てくる可能性はあると思います。 



    blog comments powered by Disqus