The following paper describes a method of generating the numbers for a hash table. By using error correcting codes, we ensure that positions that are close on the board are not close in the hash space. Some experiments showed that we got an improvement in collision rate compared to using a random set of numbers.
MacWilliams and Sloane's book on error correcting codes[9]has the glory details about the theory and programming.
Well, first explain what a hash table is... You want to spread your positions out over a large data area so you need random numbers that will distribute a Chess position over, you know, a lot of different, you know, memory maps or memory locations.
So BCH random numbers were something that some people had developed at the University of New Mexico. Those people had a Chess program. They wrote an article on it and ... I think it's three different people that developed it. Anyway, it's a coding scheme that gives the maximal distance between... Bit adjacent numbers so that you spread your positions over - more uniformly over the hash table area. They don't tend to bunch up as much that way.
So, anyway, they wrote an article on how to do that and I had - in fact, I even got the book that they recommended and read it and figured it out how to do it because they didn't really tell you how to do it. They just said that they were using them and they were... So I tried it and, sure enough, they worked a lot better than the old method of getting random numbers.
a fast incremental Hash function to transform a board position into a number of a set length, quite similar to Zobrist Hashing. It was proposed by Tony Warnock and Burton Wendroff in 1988 [1], relying on BCH codes invented by Alexis Hocquenghem in 1959 [2], and independently by Raj Chandra Bose and Dwijendra Kumar Ray-Chaudhuri in 1960 [3]. They used a BCH signature length of 81 (or more) bits to protect 16 bits from the full position string of 749 (64*12 - 2*2*8 + 4 + 8 + 1) bits, which is sufficient to avoid collisions within an 8 ply search. They stored 63 bits of the BCH signature as "lock" inside the table, and used 18 (or more) lower bits as index. Rainer Feldmann elaborates on BCH codes inside his thesis as well [4], and refers Elwyn Berlekamp's Algebraic Coding Theory [5] .
Table of Contents
Quotes
Tony Warnock
on Search Tables in Computer Chess [7] [8]:MacWilliams and Sloane's book on error correcting codes [9] has the glory details about the theory and programming.
Kathe and Dan Spracklen
excerpt from their Oral History [10] :So BCH random numbers were something that some people had developed at the University of New Mexico. Those people had a Chess program. They wrote an article on it and ... I think it's three different people that developed it. Anyway, it's a coding scheme that gives the maximal distance between... Bit adjacent numbers so that you spread your positions over - more uniformly over the hash table area. They don't tend to bunch up as much that way.
So, anyway, they wrote an article on how to do that and I had - in fact, I even got the book that they recommended and read it and figured it out how to do it because they didn't really tell you how to do it. They just said that they were using them and they were... So I tried it and, sure enough, they worked a lot better than the old method of getting random numbers.
See also
Publications
Postings
External Links
GF(2) from Wikipedia
References
What links here?
Up one Level