Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: A question about pawn hash tables

Author: Andreas Herrmann

Date: 06:54:47 09/14/00

Go up one level in this thread


On September 14, 2000 at 07:29:59, Dieter Buerssner wrote:

>On September 13, 2000 at 17:12:07, Andreas Herrmann wrote:
>
>>i want to include pawn hash tables in my chess program holmes, but i don't know
>>how i have to calculate the hash index and the hash key.
>>I think the hash index of the position will only calculated with the pawns on
>>the board like the following,
>>
>>for (pos=A1;pos<=h8;pos=pos+1) {
>>  if (figure[pos]=pawn) {
>>    PawnHashIndex = PawnHashIndex ^ RandomIndex[pos].index;
>>  }
>>}
>>
>>is this right??
>
>There is at least missing some color information. With your scheme, you will
>get the same pawn hash for two positions with the same pawn structure, and
>on pawn changes color. Also, it might be useful, to hash the king positions,
>when much of your pawn evaluation depends on king positions.
>
>Without king positions in pseudo-C
>
>hash_t RandomIndex[64][2]; /* Initialize by Pseudo random numbers */
>
>  PawnHashIndex = 0;
>  for (pos = A1; pos <= H8; pos++)
>    if (figure[pos] == pawn)
>      PawnHashIndex ^= RandomIndex[pos][color[pos]];
>
>I guess, that it is obvious, that you don't want to do this after every move.
>If you move a pawn , you can update the PawnHashIndex by
>
>  /* Update the pawn hash for "normal" pawn move */
>  PawnHashIndex ^= RandomIndex[from][side]; /* clear the old pawn position */
>  PawnHashIndex ^= RandomIndex[to][side]; /* put in the new pawn position */
>
>Similar code is needed for captures of a pawn and pawn promotions.
>
>Dieter

Hello Dieter,

thanks a lot for your detailed help. I think i have understand all.

Andreas




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.