Author: Omid David Tabibi
Date: 17:55:41 07/12/03
Go up one level in this thread
On July 12, 2003 at 20:44:50, Federico Corigliano wrote:
>In previous version of my chess engine I have:
>
>if(!in_check && !threat && (phase != ENDGAME) && depth > 2)
>{
> Do_null_move()
> ...
>
>
>Now I changed it to:
>
>if(!in_check && !threat && (phase != ENDGAME))
>{
> Do_null_move()
> ...
>
>And performs better in the WAC test suite.
>Now when the remaining depth is < than R, it goes directly to the Qsearch,
>because I have:
>
>if(depth <= 0 || depth >= MAXDEPTH)
>{
> score = Qsearch();
> return score;
>}
>
>Anyone probed this? It's safe?
Yes. Take a look at the following pseudo code of standard null-move pruning:
/* the depth reduction factor */
#define R 2
int search (alpha, beta, depth) {
if (depth <= 0)
return evaluate(); /* in practice, quiescence() is called here */
/* conduct a null-move search if it is legal and desired */
if (!in_check() && null_ok()) {
make_null_move();
/* null-move search with minimal window around beta */
value = -search(-beta, -beta + 1, depth - R - 1);
if (value >= beta) /* cutoff in case of fail-high */
return value;
}
/* continue regular NegaScout/PVS search */
. . .
}
But if you implement verified null-move pruning note that in some cases
depth > 1, see http://www.cs.biu.ac.il/~davoudo/pubs/vrfd_null.html
>
>Federico
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.