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.