れさぴょんの定跡処理

現在、定跡処理はれさぴょんを参考にしていて(定跡ファイルも借りている)
基本的に


れさぴょんの定跡ファイルは、[棋譜数][512]の中に2バイトづつ座標が並ぶ構造になっている


座標は、CSA将棋から来る駒座標で、[512」ということから、256手までの棋譜を持てる。
定跡として、棋譜自体は最後まで並んでいる必要はないので、途中で終わるときは0か0xffなら次のセクションを見ることになる。


定跡を引くときは、[棋譜番号][0][1]〜[棋譜番号][510][511]までの256個を順番に見ていき、
初手から現在まで一致している棋譜が見つかれば、次の手は、定跡手となる。
実際は、次の手が見つかっても、次の棋譜番号の512バイトも一致してないか?を確認し、
最後まで調べれば、次の1手が複数見つかる。


次の1手は複数の棋譜で重複するので、次の1手として現れた回数が高いもの、もしくは次に高いものを乱数で選択すると良いだろう。
ここで頻度の少ないものを選ぶと、あまり見たことのない序盤へ誘導することになり、定跡はすぐにヒットしないようになってしまう。




れさぴょんの定跡処理の解説は、このへんにして、
今回やろうと思うのは、予め、定跡の局面のハッシュを求めて置いて、ハッシュと次の1手を紐尽く形で、ファイルに保存しておく。
そうすれば、局面探索中に、ハッシュを使って、次の1手が求まるので、
上記のように手順の一致で、次の1手を見つけるよりも、柔軟に定跡を利用することができるようになるはずである。