ハッシュから引く定跡ファイルを作ろう

やや複雑だし、必ずしもBonanzaと同じ形式で定跡を持つ必要もないので、
ここはもうちょっと簡略化した方式を試してみよう。


インデックス部に、データベースへの位置を持たずに、そのまま指し手を記述するのである。
要素が1個しか書けないので、インデックスは充分大きい必要がある。
また、ハッシュの誤一致をした場合、間違った次の一手を取り出す危険性があるが、
合法手かどうか?は調べる関数があるので、合法手かどうかをチェックしてから指せば、問題はないと思われる
(それでも、誤一致で、合法手の可能性もありうる)
一応、試してみて問題があるようなら、インデックスとデータベースを別けたデータ構造も検討してみよう。


インデックス部を(0xffffff+1)個として定跡ファイルを作ると、
約32MBのファイルができあがる。
定跡を使う場合は、(現在のハッシュ&0xffffff)*2の位置にseekすると、そこに指し手が2バイトならんでいるはずである。
ファイルはできたので、実際に現在の定跡呼び出しの代わりに使ってみたいと思う。


しかし、定跡ファイルを見ていて思ったけど、定跡ファイルを使って学習すればいいんでは?(^^;)
↑定跡にある局面は定跡と一致するので学習の意味がないが、似た局面などは学習の効果が生かせる


あと、定跡は序盤にしか有効ではないが、「将棋はカオス」なんだと思う
同じ初期局面からスタートするけど、相互作用で、膨大な局面に分化する。
将棋を指せる人間は、カオスの中から、なんらかの抽象化を学び、一般知識としているのだろう。