カウンター手 再考
Mate Killerの考察からすると、カウンター手も単にただやんキラーとして有効なだけなのかも?と思ったので、ちょっと実験してみた。
現在、sakurapyonのカウンター手の処理は下記のようになっている。
- インデックスは [手番][From][To]
- ただし、駒打ちのときは From=81 とする
- 指し手は細かく分類した方がいいのか?で実験したように、駒打ちのときは駒種を見ないほうが有効
- βカットが発生したら、1つ前の手をインデックスとして指し手を登録
- 手生成のときに、置換表の手の次にカウンター手を試す
さて、もしカウンター手が単なるただやんキラーなのであれば、インデックスは [手番][駒種(駒打ちの時は0)][To] のような実装でも良いような気がする。前回のMate Killerの考察局面だと、 2四角打5二玉5一角成同玉でも1五角打6二玉5一角成同玉のときでも、5一角成→同玉 の情報だけあれば良いんじゃないか?という発想。これだけで済めば使用メモリも少なくなって一石二鳥。
実験してみたら、意に反して[From][To] の方が[駒種][To]よりも明らかに良さそう。何でだろう? 手があったときの有効性(βカット率)は同じぐらい高いのだが、手を参照する機会が減っているようだ。情報量が少なくて類似の手が上書きされてしまっているのだろうか? もうちょっと検討が必要かな、これは。