Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Fail High Reductions - question about researches

Author: Tony Werten

Date: 08:53:01 11/12/04

Go up one level in this thread


On November 11, 2004 at 14:06:53, milix wrote:

>The below pseudocode (slightly modified) comes from the paper
>'Fail High Reductions' of Rainer Feldmann, 1996
>
>int FHR_negascout(alpha, beta, depth)
>{
>   e = evaluate();
>   t = threat();
>   d = depth;
>   fh_node = false;
>   if (!in_check AND alpha==beta-1 AND e-t >= beta) {
>      fh_node = true;
>      d = d-1;
>   }
>   if (d <= 0) return quiescent(alpha, beta);
>   N = generate_moves();
>   low = alpha;  high = beta;  best = -INF;
>   for_all_moves m[i], i=1..N {
>      make_move(m[i]);
>      score = -FHR_negascout(-high, -low, d-1);
>      if (score>low AND score<beta AND i>1) {
>         score = -FHR_negascout(-beta, -score, depth-1);
>      }
>      undo_move(m[i]);
>      low = max(low,score);  best = max(best,score);
>      if (best >= beta) return best;
>      high = low+1;
>   }
>   return best;
>}
>
>My question is about the condition:
>  if (score>low AND score<beta AND i>1)
>
>Why score>low and i>1? I think that we expect this node to fail high,
>so if it didn't we must research.

No, rather the opposite. If you don't fail high, the heuristic was wrong/ search
is being unpredictive.

>Same for the first move.
>So if the above are true the condition of research must be:
> if ((fh_node AND score<beta) OR (score>low AND score<beta AND i>1))
>
>Am I missing something?

Yes, fh_node is a (crappy) heuristic for a fail high node, while (score>alpha
etc ) is the real stuff.

The fact that fh_node is true doesn't mean the search actually returned with a
score>alpha.

If it does, you don't want to do a "research" but rather a "how much better is
the position" since you were only searching it before with the question "is it
better",expecting it to be worse.


If the score returned <alpha, there is no point in researching since it can't
change the score because it again will produce a score<alpha.

If the score returned >beta, there is no point in researching since it again
will produce a too big score.

If i=1, there is no point in researching since you weren't searching with the
"is it better" question before but with "what is the exact score" question (
What you do for all positions where beta!=alpha+1 and you're trying the first
move.)


Tony

>
>Thanks in advance,
>Anastasios Milikas



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.