モンテカルロ将棋(8) 必至問題解けないっす(^^;

CSAブログで山田さんが取り上げてくれてました
http://www.computer-shogi.org/blog/monte_carlo_shogi_try/

モンテカルロアルゴリズムの性質からして、終盤の詰みが生じる直前の局面に強いということは充分に考えられるので

 2手スキとか必至を乗り越えるために使えるんじゃないか? と思ってやり始めました。


ということで、「詰みが生じる直前」の
1手必至とか、判りやすい問題をやらせてみました。


解けないっすねえ(w
王手の応手が、通常なら一つでも防げればOKなんですが、
モンテカルロだと、詰まない局面の勝率も高く出てしまうようです。
詰め探索は、攻めは王手が受けられないことを全て証明するAND探索
受けは、王手の応手が一つでも成立することを証明するOR探索


モンテカルロの場合、AND探索は近似できそうですが、OR探索が難しいんではないだろうか?
要するに、受けられる手がない場合にも、確率的には受けられる可能性が出てしまう。


詰め将棋もいまんとこ無理っす


でも、UCTなら大丈夫かな? いや、でも1手31飛成を進めて、そのあとの詰め将棋が認識できないと……


「詰めと必至ハンドブック」内藤國雄(日本将棋連盟出版部)より1手必至問題(P191)
正解「31飛成」

▼v歩十六v香四v桂三v銀四v金二v角二
9 8 7 6 5 4 3 2 1
--------------------------+
・ ・ ・ ・ ・ ・ ・v金v王|一a
・ ・ ・ ・ ・v歩 ・ ・ ・|二b
・ ・ ・ ・ ・v飛 ・ ・v歩|三c
・ ・ ・ ・ ・ ・ 飛 桂 ・|四d
・ ・ ・ ・ ・ ・ ・ ・ ・|五e
・ ・ ・ ・ ・ ・ ・ ・ ・|六f
・ ・ ・ ・ ・ ・ ・ ・ ・|七g
・ ・ ・ ・ ・ ・ ・ ・ ・|八h
・ ・ ・ ・ ・ ・ ・ ・ ・|九i
--------------------------+
△ 金
ui: △12金打(-2546) △84飛(-2597) △31飛成(-2738) △32桂成(-2773) △74飛(-2790)
△32飛成(-2805) △39飛(-2821) △94飛(-2824) △54飛(-2824) △64飛(-2824) △12桂
成(-2855) △35飛(-2931) △36飛(-2932) △37飛(-2941) △38飛(-2941)

oSimulation!
△12金打(45/1) △84飛(37/1) △31飛成(41/1) △32桂成(44/1) △74飛(31/1) △32飛成(
3/1) △39飛(35/1) △94飛(36/1) △54飛(37/1) △64飛(34/1) △12桂成(24/1) △35飛(
4/1) △36飛(33/1) △37飛(29/1) △38飛(33/1) △59金打(37/1) △33金打(45/1) △72
金打(28/1) △92金打(22/1) △71金打(24/1) △82金打(36/1) △44金打(38/1) △81金打(
9/1) △91金打(30/1) △32金打(58/1) △31金打(64/1) △62金打(31/1) △52金打(40/1)
△51金打(35/1) △61金打(35/1) △41金打(51/1) △95金打(26/1) △94金打(28/1) △84
金打(27/1) △74金打(30/1) △64金打(26/1) △77金打(23/1) △54金打(37/1) △68金打(
7/1) △15金打(39/1) △86金打(21/1) △55金打(30/1) △58金打(31/1) △57金打(27/1)
△28金打(27/1) △99金打(39/1) △19金打(29/1) △25金打(36/1) △88金打(25/1) △56
金打(32/1) △79金打(26/1) △78金打(32/1) △39金打(33/1) △38金打(30/1) △89金打(
1/1) △69金打(27/1) △17金打(29/1) △97金打(29/1) △98金打(37/1) △18金打(29/1)
△31金打(65/2) △31金打(65/3) △31金打(65/4) △31金打(64/5) △31金打(64/6) △31
金打(64/7) △31金打(64/8) △31金打(65/9) △31金打(65/10) △31金打(65/11) △31金
打(65/12) △31金打(65/13) △31金打(65/14) △31金打(65/15) △31金打(65/16) △31金
打(65/17) △31金打(65/18) △31金打(65/19) △31金打(65/20) △31金打(65/21) △31金
打(65/22) △31金打(65/23) △31金打(65/24) △31金打(65/25) △31金打(65/26) △31金
打(65/27) △31金打(65/28) △31金打(65/29) △31金打(65/30) △31金打(65/31) △31金
打(65/32) △31金打(65/33) △31金打(65/34) △31金打(65/35) △31金打(65/36) △31金
打(65/37) △31金打(65/38) △31金打(65/39) △31金打(65/40) △31金打(65/41) △31金
打(65/42) △31金打(66/43) △31金打(66/44) △31金打(65/45) △31金打(65/46) △31金
打(66/47) △31金打(66/48) △31金打(66/49) △31金打(66/50) △31金打(66/51) △31金
打(66/52) △31金打(66/53) △31金打(66/54) △31金打(66/55) △31金打(66/56)
o=30450 po/s=1727 node=1714138 hash=0 mateOne=14898 even=12787 time=17.6秒


受け損なっても攻めがとがめないから、詰まない局面まで勝率が高く出ている……

証明数の考え方とかを混ぜてみようかな?