詰め部分木を実装しました
5/5のコンピュータ将棋選手権まであと1週間ですねえ。
空き時間はすべて開発に投入しています。
去年は当日の朝までコードをいじってバグだらけになって酷い目に合いましたので(^^;
(とか言いながら今年も当日までいじりそうで危険)
というわけで、詰め部分木をやっと実装しました。
GPWの時に、マイムーブ西村さんが実装してて「いいなあ……」と思ってましたが、
作るのに半年かかりました(汗
どうも、類似ハッシュという言い方がよく判りませんでしたが(今も判りません)
要は、詰んだ手順を覚えておけばいいわけですよ。
http://www31.ocn.ne.jp/~kfend/inside_kfend/ptc.html
KFEndの詰めろ意識した探索なんかも参考にやってみたら、
意外にあっさり動いてくれて、しかも詰めろの回避だけじゃなくて、相手に詰めろもかけられるようになって、
秀樹感激!るいるい(古い)
進歩本の棚瀬さんのIS将棋解説での、
詰めろ局面を解けるようになりました(棚瀬さん天才!)
後手が▼39飛成△18王▼28金打の詰めろをかけています。
(先手にパスさせて詰め将棋を呼べばわかります)
水平線って言うか、なぜか静止探索が22角成りを上位に上げるんですよねえ……。
相手の守りを崩して、金と角交換で良いと思うんですかねえ?
戦線に飛車を呼び込むだけで損と思うけど
途中で詰め部分木が発動して16歩で詰めろ回避を考え始めて、
最終的に自陣が堅い29金を選択(゚Д゚ )ウマー
▼v歩v銀 9 8 7 6 5 4 3 2 1 ---------------------------+ v香v桂 ・ ・ ・ ・ ・v桂v玉|一 ・ ・ ・v飛 ・ ・ ・v金v香|二 v歩v歩v歩 ・v歩 金 ・ ・v歩|三 ・ ・ ・ ・ ・ 角 ・ ・ ・|四 ・ ・ ・ 桂 ・ ・ ・ ・ ・|五 ・ ・ 歩 ・ ・ 歩 歩 ・ ・|六 歩 歩 ・ ・v馬 ・ 金 歩 歩|七 ・ ・ 銀 ・ ・v歩 銀 王 ・|八 香 桂 ・ ・v飛 ・ 金 ・ 香|九 ---------------------------+ △ 歩四 銀 詰めろ:▼39飛成△18王▼28金打 gen:100 △53桂成(613)△22角成(467)△66歩打(429)△63歩打(388)△53桂(346) # 1 0.1s +467 △22角成▼同飛 # 2 0.1s +467 △22角成▼同飛△53桂成 # 3 0.2s +274 △22角成▼同飛△29金▼79飛成 # 4 0.9s -64 △22角成▼同飛△29金▼79馬△53桂成 # 4 1.1s +50 △16歩▼65飛△32金▼39飛成△同王 # 4 1.2s +145 △29金▼39銀打△18王▼65飛△53角成 # 5 1.7s +427 △29金▼39銀打△18王▼28歩打△53角成▼65飛 # 6 3.2s +369 △29金▼39銀打△18王▼28歩打△53桂成▼29歩成△62圭 # 7 10.9s +338 △29金▼65飛△31銀打▼33歩打△22銀成▼同王△53角成▼79飛成△77 桂 25.6s 互角(+338) △29金▼65飛△31銀打▼33歩打△22銀成▼同王△53角成▼79飛成△77 桂 4( 21040)** 5( 78941)******* 6( 105426)********* 7( 144343)************ 8( 153018)************* 9( 207377)****************** 10( 123649)*********** 11( 138438)************ 12( 44112)**** 13( 37433)**** 14( 5158)* 15( 2456)* 16( 233)* 17( 38)*
っていうか一週間前に詰め部分木作ってる自分って( ´Д`)
しかし、詰め部分木の利用ってのは素晴らしい方法ですね。
確認のコストが凄く低いので末端でも安心して確かめられます。
ただ、厳密には同じ手順で詰みまで到達しても、途中で王の応手が変化して、実は詰んでない
ってこともあると思うんです。
元々、厳密では無い代わりに速い、実践的必至探索と進歩本にもあるのでそれは仕方ないでしょうが……
考えてみると、動的に作り出すマクロ手筋みたいな気もしますね。
連続手のキラー手というか、キラー手筋?