進歩本3のIS将棋の棚瀬さんによる詰み部分木の利用

上の書き込みで、擬似ハッシュ詰めと書いてましたが、類似ハッシュ詰めの間違いでした。

▼持駒v銀
 9 8 7 6 5 4 3 2 1   987654321
---------------------------+  ------------------+
v香v桂 ・v金 ・ ・ ・ 龍v香|一 -1-2-2 0-2 1 0 0 2|一
v歩v玉v銀 ・v金v角 ・ ・ ・|二 -2 0-2-2-1-1 1 2 0|二
 ・v歩v歩v歩v歩 ・ ・ ・ ・|三 -2-2-2-2-2-2 1 1 0|三
 歩 ・ ・ ・ ・ ・v銀 銀v歩|四  1-1-1 0-1 1 0 0-1|四
 ・ ・ ・ ・ 角v歩 ・ ・ ・|五  1 0 1 1 0-1 0-1 1|五
 ・ ・ 歩 歩v桂 ・ ・ ・ 歩|六  1 1 0 1 0 1-1 1 1|六
 ・ 歩 ・ ・ ・ 歩vと 歩 ・|七  2 1 3 3 2 0 1-2 1|七
 ・ ・ 王 金 金 ・ ・ ・ ・|八  1 1 1 1 1-1-2-2 0|八
 香 桂 ・ ・ ・ ・ ・v龍 香|九  0 0 0 1 0-1-1 0-1|九
---------------------------+  ------------------+
△持駒 歩三 桂

の局面で、61龍の後に、後手が61同銀と受けると、74桂打で、角の利いている73歩がPinされていて、詰みになる。
という局面ですが、
実際は、61龍の後に、後手の王手ラッシュが始まって、ラッシュ終了後に61銀と取ったときに、74桂打で詰むことを理解するには、
ものすごく読めないといけなくなってしまう


ってことで、とりあえず同じ局面を東大将棋で作ってみて、探索させてみた。

generate: 98moves △11龍(484:0)△61龍(238:0)△57歩打(-76:0)△59歩打(-76:0)△41龍
(-81:0)
#03  0.09s  -1905 △11龍▼68桂成△同金▼62金
#03  0.11s   -631 △61龍▼同銀△74桂打▼71王
#04  0.19s  -2073 △61龍▼68桂成△同金▼61銀△38歩打
#04  0.23s  -2059 △74桂打▼71王△57金▼49龍△61龍▼同王△93歩成
#04  0.27s   -953 △93歩成▼同歩△61龍▼同銀△74桂打▼72王
#05  0.59s  -2397 △93歩成▼同歩△61龍▼68桂成△同金▼61銀△38歩打
#05  0.66s  -1921 △61龍▼68桂成△同金▼79金打△77王▼61銀△74桂打▼71王
#06  1.17s  +1187 △61龍▼68桂成△同金▼67銀打△同金▼61銀△15銀
#07  1.56s   +323 △61龍▼68桂成△同金▼89龍△同王▼97桂打△同香▼61銀△15銀
#08  3.92s    -30 △61龍▼68桂成△同金▼79金打△77王▼88銀打△同王▼89金△77王▼
61銀△64角
#09 31.39s  +2628 △61龍▼68桂成△同金▼74銀打△52龍▼59龍△86桂打▼55龍△74桂▼
同歩△42龍▼47と△62龍△77王▼57龍△78王▼57角成△95香▼85王△78王

BEST:40.00s △61龍▼68桂成△同金▼74銀打△52龍▼59龍△86桂打▼55龍△74桂▼同歩△
42龍▼47と△62龍

駒得=-116 王の安全度=-15 nps:448K
ノード:2185789 静止:2388657 静止2:13335811 末端:2388657
Futility:2128987/17053/17536 NullMove:247620
終盤度 先手+10 後手 +6
βcut:0/85408/1586914 hashCut:597634 hash7.695%
recap:24078 詰めろ:0 王手:88696 最大深さ:26

うは(笑
予想通りの展開。61龍の後に、王手ラッシュが始まって、反復進化9回回っても、詰みが理解できてない。
いちおう61龍が最善手という判断はしているが、詰むことがわかっていれば、自信をもって指せるのに
もったいない話である。


ということで、予め、61龍、同銀で、詰むことを覚えておいて、
王手ラッシュの後に、61銀と後手が指したら、詰み探索を呼べばいいのだろうか。
しかし、実際は王手ラッシュをやると盤面が変わるので、当然ハッシュも変わるはずで、
たとえ同銀で詰むとハッシュに記録しておいたとしても、
王手ラッシュのあとに、そのハッシュを引くのは不可能と思う。


うーむ、選手権で、成り金将棋さんが、予め詰むと判った場合の手を保存しておいて、違う局面で、同じ手を指した時に、
詰むかどうかを調べる。みたいな手法の話をされていた覚えがあるのだが、
要するに、詰む場合は、バッファにでも相手が指した手を保存しておけばいいのだろうか。
YSSの論文に、棚瀬さんの手法を、「類似ハッシュ詰め」として紹介していたので、ハッシュを使うのは確かなのだろうが……
類似? ハッシュは少しでも違うとぜんぜん違う値になるからこそハッシュなのだと思うのだが……


http://chocobo.yasuda-u.ac.jp/~nisimura/mymove/index.cgi?next_no=326
>今回確かに類似局面をハッシュで見つける、みたいなことを入れましたわそういえば。

 これはかなりヒントを頂いたと思いますので、考えて見ます。