Null Move Reductions

From Chessprogramming wiki
Revision as of 20:37, 29 April 2018 by GerdIsenberg (talk | contribs) (Created page with "'''Home * Search * Selectivity * Reductions * Null Move Reductions''' '''Null Move Reductions''',<br/> not to confused with the widespread Null Mo...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Home * Search * Selectivity * Reductions * Null Move Reductions

Null Move Reductions,
not to confused with the widespread Null Move Pruning, work similar to Feldmann's Fail-High Reductions, but use a Null Move Search rather than static evaluation and reduces by a amount of four plies rather than one. Omid David and Nathan S. Netanyahu introduced so called Extended Null-Move Reductions [1] with an adaptive R based on depth.

If a null move fail-high occurs - opposed to Null Move Pruning - the search is reduced by four plies, rather than pruned. Thus, Null Move Reductions are therefor less vulnerable to Zugzwang and might even applied in (late) endings.

if ( nullMoveAllowed && ...) {
   R = depth > 6 ? 4 : 3;
   makeNullMove()
   score = -zwSearch(1-beta, depth-R-1) // -AlphaBeta (0-beta, 1-beta, depth-R-1)
   unmakeNullMove();
   if (score >= beta ) {
      depth -= 4; // reduce search
      if ( depth <= 0 )
          return Evaluate(); // Quiescence
   }
}
// continue search

For zwSearch, see Zero Window Search inside the Principal Variation Search.

See also

Forum Posts

References

Up one level