Null Move Reductions

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

Publications

Forum Posts

References

  1. Omid David, Nathan S. Netanyahu (2008). Extended Null-Move Reductions. CG 2008

Up one level