Null Move Reductions
Revision as of 15:19, 27 August 2018 by GerdIsenberg (talk | contribs)
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. Eli David and Nathan S. Netanyahu introduced so called Extended Null-Move Reductions [1] with an adaptive R based on depth.
How it works
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
- Double Null Move
- Fail-High Reductions
- Null Move Observation
- Null Move Pruning
- Standing Pat in Quiescence Search
Publications
Forum Posts
- Extended Null-Move Reductions by Alvaro Cardoso, CCC, August 20, 2010
- Null move alterative in endgames by Aleks Peshkov, CCC, November 16, 2011
- thoughts on null-move reduction by Youri Matiounine, CCC, June 14, 2015 » Null Move Pruning