Computer Chess Club Archives


Search

Terms

Messages

Subject: How do program find if a position is in book?

Author: Uri Blass

Date: 05:30:48 05/16/04


Suppose that you have a book of 2^20 positions.
Suppose that you need in average 16 bytes for every position(to store
positions,moves and some more information like learning value for every move).

I do not like the idea to store only positions in book and I think that the the
job of making all moves in book positions to find more book moves can be done in
the time of creating the book.

I can think of 3 ways to find if a position is in book

1)To do a binary search in the file that has the positions(Disadvantage:you do
more searches in the file relative to other ways and you basically need to probe
the file 20 times only to find if a position is in book).

2)To have a special file that has the exact place that you need to search based
on the last 20 bits of the hash key(disadvantage if you add a single position to
your book you may need to change almost 2^20 numbers in this file because if the
place of one position is changed the place of all positions after it is changed)

3)Not to have a special file of the exact places but to know the right place to
search because you know that your book has  96 bytes for every 20 bits of the
hash key when usually part of the bytes have meaningless 0's.

Distadvantage:Your book is bigger than neccesary(96 Mbytes instead of 16 Mbytes)
and there is a risk that it is not going to be enough to store all the positions
and moves(the main problem is not having many positions with the same last 20
bits in the hash key but having many moves for the same position that can
increase the bytes that you need for one position significantly if you need 4
bytes for every move).

Uri



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.