Author: Robert Hyatt
Date: 19:49:52 06/06/05
Go up one level in this thread
On June 06, 2005 at 13:10:20, Johannes wrote: >Hello! > >While working on my chess engine I've come across two problems which I dont know >how to deal with correctly: > >1. After retrieving a hash entry, can I do the following: > > if (tt_flag == UBOUND) beta = MIN(beta, tt_merit); > >It has worked for me fine, but is in my opinion theoretically unsound. > >2. How to deal with a result from a node where alpha and beta have collided? Ths >happens rarely, but can happen due to altering of bounds because of a hash >entry. What can I do if i want to store the result from such a node? It is >neither a LBOUND nor a UBOUND, right? > >I hope some of the more experienced chess programmers can help me with these... > >thanks >johannes If you verify the depth, that is the hash table depth is > than the remaining actual search depth, then you can adjust the bounds with no problems. Greenblatt and Slate/Atkin both wrote about that idea. It is always possible that the lower bound from the table is higher than the current upper bound, and vice versa, those are the common cases we depend on in fact. And it is also possible that the lower bound from the table is not above the current upper bound, but it is better than the current lower bound, which would let you adjust your current lower bound upward to make it more accurate. There's nothing wrong with any of that, except that most use a null-window search today, which means that 99.9999% of the positions searched have alpha=beta-1, so that adjusting the bounds can't actually happen, as if you were to be able to adjust the lower bound, you already have enough info to produce a fail high, and vice versa...
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.