Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: hashtable

Author: James Swafford

Date: 06:07:13 05/11/04

Go up one level in this thread


On May 11, 2004 at 05:54:52, Jeff GAZET wrote:

>Good morning,
>
>i have some questions about the move to add into the hashtable (see code).
>When doing a null move, i don't know which move to insert ?
>At the end of the search() function, the "bestmove" can be null. So in
>TTableInsert(), if the move is NULL, we should return immediatly ?
>
>And another question: the score added to the hashtable depends on the side to
>move, so we should use 2 transpositions tables ? or returning +-score ?
>
>Thanks.
>
>search(...)
>	{
>	bestmove=NULL;
>	...
>	if(it's all right for a null move)
>		{
>		do_nullmove();
>
>		if(depth-R<1) {eval=-quiesce(-beta,-beta+1);}
>		else {eval=-search(depth-R-1,-beta,-beta+1,false);}
>
>		undo_nullmove();
>
>		if(eval>=beta)
>			{
>			// what should be bestmove here ? as bestmove is NULL actually
>			TTableInsert(depth, eval, hashfBETA,bestmove);


That seems very wrong to me.  I don't even do inserts after null
moves (not sure why; maybe I just haven't tried it).  You just
did a search to a reduced depth (R), so 'eval' represents the score
returned by that reduced search.  Storing the current position
with 'depth' will break things I think.

On your original question: why store a move at all?  If you
don't have one, just don't insert one.  Later, if you get a
hash hit, you'll have bounding information w/o a move to try.

--
James



>			return eval;
>			}
>		}
>	...
>	for(each move)
>		{
>		domove(themove);
>		eval=-alphabeta(depth-1,-beta,-alpha,true);
>		undomove();
>		if(eval>alpha)
>			{
>			bestmove=themove;
>			if(eval>=beta)
>				{
>				// bestmove!=NULL here
>				TTableInsert(depth, eval, hashfBETA,bestmove);
>				return eval;
>				}
>
>			alpha=eval;
>			}
>		}
>
>	// bestmove can be NULL here or can be the last "bestmove" found in for(each
>move)
>	TTableInsert(depth, alpha, (alpha<=orig_alpha)?hashfALPHA:hashfEXACT,bestmove);
>
>	return alpha;
>	}



This page took 0.01 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.