Late Move Reductions

From Chessprogramming wiki
Revision as of 19:08, 22 July 2024 by ShawnXu (talk | contribs) (Re-searches: add note)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Home * Search * Selectivity * Reductions * Late Move Reductions

Samuel Bak - Other Rules [1]

Late Move Reductions (LMR),
or its version known as History Pruning and History Reductions [2] , save search by reducing moves that are ordered closer to the end of likely fail-low nodes. Typically, most schemes search the first few moves (say 3-4) at full depth, then if no move fails high, many of the remaining moves are reduced in search depth. The technique has been used for many years in various forms, but it became very popular in 2005 after Fruit and Glaurung [3] used open source implementations based on the History Heuristic. LMR can often reduce the effective branching factor to less than 2, depending on the reduction conditions.

Common Conditions

Most programs do not reduce these types of moves:

  • Depth < 3 (sometimes depth < 2)

Most programs reduce these types of moves less:

Most programs reduce these types of moves more:

Uncommon Conditions

Uncommon conditions on moves not to reduce:

Reduction Depth

Classical implementation reduces by one ply only. Yet modern programs, most notably Stockfish, allow reductions of more than one ply and increase them for later moves. Reduction depth changes according to expected node type (being typically smaller in pv nodes), depth and move number. Here some sample formulas can be viewed:

  • Weiss reduces by 0.20 + ln(depth) * ln(move number) / 3.35 for captures and promotions and 1.35 + ln(depth) * ln(move number) / 2.75 for quiet moves.
  • Ethereal reduces by 0.7844 + ln(depth) * ln(moves played) / 2.4696 for quiet moves and 3 (or 2 if the move gave check) for captures and promotions
  • Senpai reduces by one ply for the first 6 moves and by depth / 3 for remaining moves.
  • Fruit Reloaded uses formula: uint8( sqrt(double(depth-1)) + sqrt(double(moves-1))); for non-PV nodes. In PV-nodes it reduces by 2/3 of this value.

Re-searches

Classical implementation assumes a re-search at full depth if the reduced depth search returns a score above alpha. In recent years, Stockfish had success with adjusting re-search depth based on result from reduced search.

Test Results

Some test results related to LMR can be found on

See also

Publications

Forum Posts

2004

2005 ...

2006

Re: late move reductions by Alessandro Scotti, CCC, March 01, 2006 » Kiwi
PHR (Peak History Reduction) idea by Daniel Mehrmann, CCC, March 01, 2006 » Home, Relative History Heuristic

2007

2008

2009

2010 ...

2011

2012

2013

2014

2015 ...

2016

2017

2019

2020 ...

External Links

References

Up one level