2010/09/04
■ 定跡データの設計
自動対戦をさせている間に定跡データの設計をする。
#define BOOK_MOVES 5 // 最大分岐数 struct BOOK_TAG { // 24bytes uint64 key; // ハッシュキー WORD move[BOOK_MOVES]; // 手 // .PTTTTTT TFFFFFFF T:移動先(11〜99) F:移動元(11〜99) 打つ駒(1〜8) P:成り BYTE freq[BOOK_MOVES]; // 頻度 };
インデックスサイズは64kBでハッシュキーの下位16bitをインデックスとする。、エントリーサイズは16(=1block)。データはディスク上に持ち、メモリー上では持たない。インデックスキーでディスクをseekさせて1block読み込む。戦法によっては最大分岐数がもう少しあったほうがよさそうだが、ここは妥協。