昨日のエラーの件
結論から言うと、アルゴリズムの問題でした。
静止探索ではノードの初期値を「パスしてからStand-Patで*1探索した値」にしているので、本来はPVの中に2回パスが含まれる事は無いはずです。
ただ、一度パスした状態でハッシュにヒットし、かつ、ハッシュに保存してあったPVにパスが含まれていると、PV中に2回パスが出現する事になってエラーになる(&評価値がおかしくなる)ってのがエラーの状況でした。
んで、どうしよう…
- 探索開始前にハッシュをクリアする
- PVに2回パスが含まれてしまうなら、ハッシュの情報を利用しない
- パスは何回でもOKにして、2回連続パスで終端する
実装が楽なのは1だけど、ハッシュを1GB確保していると時間がかかるし、2は実装が面倒だし…
本音を言うと、ノード数がそんなに増えないなら3にしたいんですけど、どうしよっか…
*1:ノードの評価値をそのノードの初期値として