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.