第20回世界コンピュータ将棋選手権 1次予選 3回戦

3回戦の相手は「椿原将棋」。
椿原将棋はグループで開発されていて、PC-8001(6001だったかな?)の時代からBASICで組んでいるとのお話にびっくり。
今回、20回出場で表彰された柿木将棋より歴史は古い、とおっしゃってました。
自分もBASICを使っていたので、LAN対戦はどうしているのだろうと思って聞いてみたら、今はVisual BASICを使っているということで
Excelでも組める」とのこと。
VBでの出場は(たぶん)他になく、オリジナリティ満載です。
マシンはノートPCでしたが、Core i5を積んでいるとのことで、ym将棋のマシン(Core 2 Duo)より数段速そうです。


この対局は開始直後に椿原将棋のエラーで中断してしまい、審判長(香山さん)の判断で指し直しとなりました。


後手はきれいな美濃囲いに囲ったものの、王が82と71を行ったり来たりする状態。
ym将棋はちゃんと囲えず、9筋の歩を突いて▲95歩△同歩となった場面です。

後手:tsubaki
後手の持駒:歩 
  9 8 7 6 5 4 3 2 1
                                                        • +
v香v桂 ・v金 ・ ・ ・ ・v香
・v玉v銀 ・v金 ・v銀 ・ ・
・v歩v歩v歩v歩 ・v桂v歩v角
・ ・ ・ ・ ・v歩v飛 ・v歩
v歩 ・ 歩 歩 ・ ・v歩 ・ ・
・ ・ ・ ・ 歩 歩 ・ 歩 ・
・ 歩 角 ・ ・ ・ 歩 銀 歩
・ ・ ・ ・ 金 飛 ・ ・ ・
香 桂 銀 金 玉 ・ ・ 桂 香
                                                        • +
先手:ymshogi 先手の持駒:なし 手数=32 ▽9五同歩 まで


ここでym将棋は▲16歩。
その場では、▲95同香△同香▲同角でいいのじゃないか、と思っていたのですが、ログを見直してみると、▲95同香に対して△94歩打という手があって、それを嫌ったようです。
戻って▲95歩を指した局面では、読み筋が▲95歩△95歩▲16歩△96歩▲55角などとなっています。
プログラム的には予定通りではありますが、▲16歩と指すのなら、▲95歩△95歩を入れる必要はないわけです。
これはどうもおかしいと思って、対局後に調べてみると、水平線効果のチェックに2つの不具合があることが分かりました。


ym将棋では、探索で最善手順が見つかった後、水平線効果の可能性があるかチェックを行い、可能性があれば探索延長などの対応を取ります。
最初のチェックでは、「駒に取りをかける手(王手含む)→取りをかけられた駒が逃げる手」「駒を取る手→その駒を取り返す手」といった、水平線効果が発生しやすいパターンに当てはまるかを判定します。
ここで、▲95同香△同香はこのパターンに当てはまるので探索延長を行い、評価値が良くなることはないので水平線効果と判断され、指し手から取り除かれてしまいます。
しかし、もし▲95同香が駒得をする手*1だったら、水平線効果のチェックをせず、その手の良否は探索に委ねることにしています。
この判定は前日に入れたのですが、本来なら▲95同香はSEEでは歩得なので、水平線効果のチェックをしてはいけないのですが、その判定が間違っていて、チェックに回してしまっていました。
そして、探索延長しても評価が良くならないということで、水平線効果と判定し、▲95同香を読みから外してしまいました。
これが1つ目の不具合です。
1回戦、2回戦で変な手を指していたのも、どうやら同じ理由のようです。
この不具合は比較的簡単に修正できたので、3回戦の終了後に修正を行い、実行ファイルの入れ替えが4回戦に間に合わなかったので、5回戦から修正版を投入しています。


ちなみに、修正後のプログラムで上記の▲95歩を指した局面を読ませてみると、やはり▲95歩と指します。
ただ読み筋は変わっていて、▲95歩△36歩▲36歩△45歩▲68角△46歩となっていました。
ここに2つ目の不具合が隠れているのですが、それは別のところで書きます。


本局に戻り、▲16歩の後、椿原将棋の△43歩に対して、ym将棋は何と▲15歩。
△15同歩▲同香となって、意味もなく歩を捨ててしまいました。
さらに△14歩と打たれ、香も殺されます。
バグの影響(ということは対局後に分かったのですが)とはいえ、こちらは茫然と見ているしかありません。


以降、評価値はずっと悪いままで、ym将棋も多少見せ場は作るものの、じりじりと追い詰められて以下の局面に。

後手:tsubaki
後手の持駒:銀二 桂二 歩八 
  9 8 7 6 5 4 3 2 1
                                                        • +
v香v桂 ・ ・ ・ ・ 杏 ・ ・
・ ・ ・ ・ ・ ・ ・ ・ ・
・v歩v玉 ・ ・ ・v桂v歩 ・
・ ・v歩v歩 ・v歩 ・ ・ ・
歩 ・ ・ ・v金 ・ ・ ・ ・
銀 銀 ・ ・v馬 歩 ・ 歩 ・
・ 歩 ・ ・ ・ ・ ・ ・ 玉
・ ・ ・ ・ 金 ・v龍 ・ ・
・v龍v角v金 ・ ・ 金 ・ 香
                                                        • +
先手:ymshogi 先手の持駒:香 歩  手数=156 ▽7三同玉 まで


先手玉は詰み直前ですが、ここで38の後手龍を取らなかったことで、椿原将棋の方が驚いておられました。
ym将棋の読みとしては、▲38同金と取ると、その後△16銀から詰む、と読んでいて、他の手を探しています。
ここで残り時間3分20秒のところ、1分45秒使って指したのが▲28香。
これで詰まないという確信があったのではなくて、αβ探索では手が見つけられなかったので、モンテカルロ探索で指しています。
次の△39竜で負けを読み切りました。


以下、投了図です。

後手:tsubaki
後手の持駒:金 銀二 桂二 香 歩九 
  9 8 7 6 5 4 3 2 1
                                                        • +
v香v桂 ・ ・ ・ ・ 杏 ・ ・
・ ・ ・ ・ ・ ・ ・ ・ ・
・v歩v玉 ・ ・ ・v桂v歩 ・
・ ・v歩v歩 ・v歩 ・ ・ ・
歩 ・ ・ ・v金 ・ ・v龍 玉
銀 銀 ・ ・v馬 歩 ・ ・ ・
・ 歩 ・ ・ ・ ・ ・ ・ ・
・ ・ ・ ・ 金 ・ ・ ・ 歩
・v龍v角v金 ・ ・ ・ ・ ・
                                                        • +
先手:ymshogi 先手の持駒:香  手数=166 ▽2五龍 まで


終盤、椿原将棋は89竜を作ったのに、それを活用しないで、かえって79角とか69金とか、竜の筋を止めるような手ばかり指していたので、聞いてみると
「自分の王、相手の王両方から離れた位置にある駒を動かす手は読んでいない」
ということなのでした。
128手目に△79角を打ちこまれてから、ym将棋はずっと△46角成を予想していたので、予測読みが外れまくっていました。。
もし△46角成を指されていたら、もっと早く負けたかもしれませんが、勝ちが決まってからの指し手は直線的で見事でした。

*1:SEEで判断