Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: TranspositionTables and NULL-move

Author: Michel Langeveld

Date: 02:56:46 03/10/04

Go up one level in this thread


On March 10, 2004 at 05:45:47, Renze Steenhuisen wrote:

>In the code below leaving line with "/* 1 */" out saves nodes, and I don't
>understand why?! If I am correct the code represents a normal implementation of
>the use of Transposition Tables.
>
>  if( do_null_move )
>  {
>    makeMove(null_move)
>    null_val = -search(-beta-1, -beta)
>    unmakeMove(null_move)
>    if( null_val>=beta)
>    {
>      store_in_TT(null_val, LOWERBOUND)           /* 1 */
>      return null_val;
>    }
>  }
>
>  best_val = -INFINITY
>  for(all legal moves)
>  {
>    makeMove()
>    val = -search(-beta, -alpha, depth-1);
>    unmakeMove()
>    best_val = MAX(best_val, val)
>    if( val>=beta )
>    {
>       store_in_TT(val, LOWERBOUND)
>    }
>  }
>
>  if( best_val>alpha )
>    store_in_TT(best_val, EXACTBOUND)
>  else
>    store_in_TT(best_val, UPPERBOUND)
>
>  return best_val
>}

Hi Renze,

Do you use also the best_move in the hashtable?

I don't store Nullmove search results in Nullmover too.
It costs me extra nodes to do it. Also in Olithink and TSCPGothic I found
similiair behaviour.

I think the reason is that you you fill your hashtable to save something that is
cheap to calculate (do_nullmove, restore_nullmove and a function call). With
saving this you throw something out of the hash what is more valuable probably.

Michel



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.