설명
비트는 0 또는 1만 담을 수 있는 정보 단위다. 엔드게임 비트베이스는 제한된 엔드게임 종류에 속하는 각 포지션에 하나 또는 몇 개의 비트를 할당한다. 결과가 미리 계산되어 있으므로 프로그램은 모든 수순을 다시 처음부터 탐색하지 않고 이를 조회할 수 있다.
가장 압축된 형태는 포지션당 한 비트를 사용한다. 예를 들어 승리는 1, 승리 아님은 0으로 나타낼 수 있다. 두 비트를 쓰면 승리, 무승부, 패배, 유효하지 않은 포지션처럼 더 많은 상태를 구분할 수 있다. 각 비트가 차지하는 공간이 매우 작기 때문에 수백만 개의 결과도 비교적 적은 메모리에 담을 수 있다.
이 압축성에는 대가가 따른다. 비트베이스는 대개 포지션의 결과가 무엇인지는 알려 주지만 최선의 수나 목표까지의 거리를 저장하지 않을 수 있다. 은 합법적인 수를 생성하고 그 결과 포지션을 조회하여 결과를 유지하는 선택을 재구성할 수 있다.
와 혼동해서는 안 된다. 비트보드는 한 포지션 안의 칸 집합을 표현하지만, 비트베이스는 많은 완전한 포지션을 정리하고 각각의 결과를 저장한다. 또한 이나 같은 지표까지 포함하는 사전 계산 엔드게임 집합인 상세한 테이블베이스와 반드시 같은 것도 아니다.
용법과 맥락
비트베이스는 탐색 도중 특히 유용하다. 승리, 무승부, 패배라는 압축된 답만으로도 탐색 가지를 중단하기에 충분할 수 있다.
자주 혼동하는 개념
비트베이스와 비트보드
비트베이스는 많은 포지션의 결과를 저장하고, 비트보드는 한 포지션의 칸들을 표현한다.
용어 보기비트베이스와 완전한 테이블베이스
비트베이스는 압축성을 우선하므로, 더 풍부한 형식에서 프로그램이 도출할 수 있는 거리나 수 정보를 생략할 수 있다.
출처
- 1.Endgame Tablebases, Chess Programming Wiki
- 2.bitbase.cpp, Stockfish
