3手/5手詰め判定

並列化の前に短手数の詰将棋ルーチンを書いておこうと思い、3手/5手詰めルーチンをいま書いているのですが、高速化するにはこれが大変複雑でちょっとやそっとでは書けそうにありません。

そもそも書いたら書いたでまたしばらくはバグっていて、そのデバッグがまた大変で、おまけに、ひよこカルロ将棋はたいてい詰むか詰まざるやで負かされているのではなく、序盤で大差をつけられて切らされて負けているわけで、詰将棋なんか関係ないようにも思えます。

現在は探索中の各ノードで1手詰め判定をしているのですが、この1手詰め判定すらひよこカルロ将棋には無駄ではないかという疑念を私はいだいており、本当のところ無駄なのか無駄でないのか私にはよくわかりません。

1手詰め判定ルーチンをコメントアウトして自己対戦させてみれば良いのですが、そうは言っても序盤がひどすぎて自己対戦の勝率からは何も結論を出すべきではないような気もして、sspと100戦ほどやってみたいのですが、どうせなら通常探索中に
1) 詰将棋ルーチンなし
2) 1手詰め
3) 3手詰め
4) 5手詰め
のそれぞれで差がつくのかつかないのかを比較してみたいと思い、いまに至ります。

ちなみに保木さんの選択(Bonanza)は3)です。Bonanzaは評価関数がしっかりしていて、npsがそんなに出ておらず、それゆえ詰将棋判定にかかる時間は相対的には小さいということが言えて、ゆえに3)がベストなのでしょうか。

もし評価関数がさらに重くて(近年のコンピューター将棋は評価関数は重くなってnpsが落としてでも強くするという傾向が顕著です)、枝刈り性能が抜群によいなら、3)よりは4)がベストになるのかも知れません。

しかし4)を置換表なしにやってしまうとやっぱり重いような気もするのでそんなことはせずにもう1,2回iterationが回ることを期待したほうがいいのかも知れません。要するによくわかりません。

まずは実験できる状態まで持っていかないと。先は長そうです。