설명
후순위 수 감축은 LMR로 줄여 쓰며 수 순서를 활용한다. 은 실용 규칙과 축적된 탐색 통계인 휴리스틱을 사용해 유망해 보이는 선택을 먼저 살핀다.
기본 순서
- 엔진은 더 앞에 배치된 수들을 먼저 탐색하고 임시 기준을 세운다.
- 목록의 훨씬 뒤에 놓인 조용한 수, 보통 잡지도 체크하지도 않는 수를 처음에는 줄어든 깊이로 시험한다.
- 이 시험이 예상보다 강한 결과를 반환해 탐색이 사용하는 점수 경계를 넘으면 해당 가지를 더 큰 깊이로 다시 탐색한다.
감축은 삭제를 뜻하지 않는다. 실제로 강한 수가 잘못 뒤에 배치되었을 수 있으므로 더 깊은 검증이 중요하다. 감축량은 남은 깊이, 목록에서 수의 위치, 체크나 잡기 여부, 현재 최선으로 여겨지는 라인인 주 변형에 속하는지, 비슷한 수의 기록된 이력 등에 따라 달라질 수 있다.
현대 구현은 이런 조건을 세밀하게 조정한다. 지나치게 공격적인 감축은 시간을 아끼지만 강한 조용한 수를 놓치거나 와 관련된 오류를 악화시킬 수 있다.
용법과 맥락
LMR은 선택적 탐색이다. 모든 가지에 정확히 같은 깊이를 적용하지 않고 탐색 노력을 불균등하게 배분한다.
자주 혼동하는 개념
감축과 가지치기
LMR은 가지를 더 낮은 깊이로 탐색한 뒤 다시 탐색할 수 있다. 가지치기는 조건이 충족되면 가지 전체를 생략한다.
후순위 수와 게임 후반의 수
후순위는 한 노드의 탐색 순서에서 수가 놓인 위치를 뜻하며, 게임 끝 무렵에 둔 수라는 뜻이 아니다.
출처
- 1.Late Move Reductions, Chess Programming Wiki
- 2.search.cpp, Stockfish
