Author: Tord Romstad
Date: 05:06:36 03/12/04
Go up one level in this thread
On March 11, 2004 at 19:40:01, Peter Alloysius wrote: >could null move used in mtd(f)? Yes. I use the null move in my MTD(f) engine, and my impression is that most others also use it. The implementation is straightforward, you can do it almost exactly like in a PVS search. A problem is that null moves cause search inconsistencies. This happens in PVS as well, but the problem is more frequent in MTD(f). Here is a very simplified pseudo-code version of my search: int search(int gamma, int depth) { int g, value, null_value; move_t *m; if(depth < PLY) return qsearch(gamma, depth); value = evaluate(); R = choose_reduction_factor(); if(R && !check && value-biggest_hanging_piece_value >= gamma) { make_null_move(); null_value = -search(-gamma+1, depth - (R+1)*PLY); unmake_null_move(); if(null_value >= gamma) return null_value; } generate_moves(); g = -INFINITY; for(m = pick_move(); m!=NULL; m = pick_move()) { make_move(m); value = -search(-gamma+1, depth-PLY); unmake_move(m); if(value > g) g = value; if(value >= gamma) break; } return g; } Tord
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.