Computer Chess Club Archives


Search

Terms

Messages

Subject: Fail High Reductions - question about researches

Author: milix

Date: 11:06:53 11/11/04


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. 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?

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.