Author: rasjid chan
Date: 08:12:38 06/18/05
Go up one level in this thread
Your "4 or 5 lines" for fail-soft is should be correct. These lines are needed in FL to record the greatest FL score and we simply FL with this irrespective of the bounds. Fail-high don't need any extra lines, we simply return the score received from search() instead or returning beta. When we hash FL/FH, I think we can safely hash the fail-soft score and not the bounds and the theoretical advantage is straight-forward. So fail-soft is as simple as it should be. My earlier comments are actually for an attempt to have as good a hash-table implementation as posssible by "preserving and passing down" an exact score. It is posssible only with fail-soft. When we eval() in QS and there is no move to search, we return eval-score. we also return an int return_type = ex irrespective of the bounds. This ex return_type may be preserved and passed downwards(I don't have the statistic nor know the usefulness). So lower down when all moves are searched and we have a FL, we may have a best score < alpha. An int best_type is also kept which is done by applying reverse_type() to the return_type. The best_type may be ex/ub/rep3. So we may end with FL below alpha(soft) but we hash type as "exact" and not the usual "upper_bound" which is the default if we don't pass down types. If we have double bounds in hashing, then if we have depth=3,type=ex and the hash table main bound is depth=4, type=UB/LB(not EX), we need not discard hashing this search, but slot it into the secondary bound. The question is how useful is all these work. I have found that the codes for passing down "type" is rather straight-forward. As a comparison, implementing double bounds in hashing is rather complicated. Best Regards Rasjid
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.