Wyjaśnienie
Redukcje późnych ruchów, w skrócie LMR od Late Move Reductions, wykorzystują kolejność ruchów. używa heurystyk, czyli praktycznych reguł i zgromadzonych statystyk przeszukiwania, aby najpierw badać opcje wyglądające na obiecujące.
Podstawowa sekwencja
- Silnik najpierw przeszukuje ruchy umieszczone najwyżej w kolejności i ustanawia tymczasowy punkt odniesienia.
- Spokojny ruch, zwykle taki, który ani nie bije, ani nie daje szacha, znajdujący się znacznie dalej na liście jest początkowo sprawdzany przy zmniejszonej głębokości.
- Jeśli ta próba zwróci niespodziewanie dobry wynik i przekroczy próg oceny używany przez przeszukiwanie, gałąź jest ponownie badana z większą głębokością.
Redukcja nie oznacza usunięcia. Głębsza weryfikacja jest ważna, ponieważ naprawdę mocny ruch mógł zostać źle uporządkowany. Wielkość redukcji może zależeć od pozostałej głębokości, miejsca ruchu na liście, tego, czy daje szacha lub bije, czy należy do wariantu głównego, czyli linii uznawanej obecnie za najlepszą, oraz od zapisanej historii podobnych ruchów.
Nowoczesne implementacje dostrajają wiele z tych warunków. Nadmiernie agresywna redukcja oszczędza czas, ale może przeoczyć mocny spokojny ruch albo pogłębić błędy związane z .
Użycie i kontekst
LMR jest przeszukiwaniem selektywnym: rozdziela wysiłek nierównomiernie, zamiast stosować dokładnie tę samą głębokość do każdej gałęzi.
Częste nieporozumienia
Redukcja a przycinanie
LMR bada gałąź na mniejszej głębokości i może przeszukać ją ponownie. Przycinanie całkowicie pomija gałąź po spełnieniu warunku.
Późny ruch a późna faza partii
Późny odnosi się do miejsca ruchu w kolejności przeszukiwania w jednym węźle, a nie do ruchu wykonanego blisko końca partii.
Źródła
- 1.Late Move Reductions, Chess Programming Wiki
- 2.search.cpp, Stockfish
