Explanation
Late move reductions, abbreviated LMR, exploit move order. A uses heuristics, meaning practical rules and accumulated search statistics, to examine apparently promising choices first.
Basic sequence
- The engine searches better-ordered moves first and establishes a provisional reference.
- A quiet move, normally a move that neither captures nor gives check, much later in the list is initially tested at reduced depth.
- If that test returns an unexpectedly strong result and crosses the score bound used by the search, the branch is searched again at greater depth.
Reduction does not mean deletion. The deeper verification matters because a genuinely strong move may have been ordered poorly. The reduction size can depend on remaining depth, the move's place in the list, whether it gives check or captures, whether it belongs to the principal variation, the line currently considered best, and the recorded history of similar moves.
Modern implementations tune many of these conditions. Excessively aggressive reduction saves time but can miss a strong quiet move or worsen errors related to the .
Usage and context
LMR is selective search: it distributes effort unevenly rather than applying exactly the same depth to every branch.
Common confusions
Reduction and pruning
LMR searches a branch at lower depth and may re-search it; pruning omits a branch entirely when a condition is met.
Late move and late stage of the game
Late refers to the move's place in the search order at one node, not to a move played near the end of the game.
Sources
- 1.Late Move Reductions, Chess Programming Wiki
- 2.search.cpp, Stockfish
