詰めろを考慮した通常探索

http://chocobo.yasuda-u.ac.jp/~nisimura/mymove/index.cgi
西村さんが、詰め部分木の手法を解説されていた m(_ _)m


なるほど、パスして詰む場合は「詰めろ」とみなし、手を保存しておいて、
相手が王手しなくなったら、保存している手が合法手か確かめた上で打ってみて、
詰むかどうか調べる。
って感じですね。ありがとうございます。参考にさせていただきます。


そういえば、ふと思い出してKFEndの「詰めろを考慮した通常探索」を見てみると
http://www31.ocn.ne.jp/~kfend/inside_kfend/ptc.html
こちらも、棚瀬さんの手法を受けての手法と書かれてますね。

tumeroQ(1^tbn, depth) && tumiSearch(1^tbn) == TUMI;

相手から自分が詰みそうな場合に、相手から詰み探索してみて(=パスしたら詰み)、詰んだら、その下の木に、詰めろフラグを立てる。

if((mustTumi || tumiQ(tbn, depth)) && tumiSearch(tbn) == TUMI) return(+∞);

木の上位で、詰めろフラグが立っている、もしくは、
詰みそう場合に、詰み探索してみて、詰んだら+∞を返す。


これで、詰み確率が高そうな場合に、詰み探索を呼ぶ
に加えて、詰みそうになって、その下の木で
たとえ王手ラッシュが始まっても、王手が止まれば、フラグが立っているので、詰み探索をやる。
ただ、前もって詰みそうになった手順を保存しておいて、それを確かめるだけにすれば、詰み探索を呼ぶ回数が減って効率が良いはず。


天野将棋さんが、選手権で、「詰めろ考慮の探索」を実装すると、すごく強くなりますよ!
と言われていたのを思い出した。