Late Move Reductions

From Chessprogramming wiki
Revision as of 01:38, 5 July 2024 by ShawnXu (talk | contribs) (LMR Reduction Formula: Examples From Modern Engines)
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:

  • Moves while in check
  • Moves which give check
  • Killer Moves
  • Moves in a PV-Node in a PVS search
  • Moves in a node with better static evaluation than its grandparent

Most programs reduce these types of moves more:

Less Common Conditions

Less common 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.

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