임의의 9x9 격자를 지정하려면 각 사각형의 위치와 값을 지정해야합니다. 이를위한 순진한 인코딩은 81 (x, y, 값)의 트리플렛을 제공 할 수 있으며, 각각의 x, y에 대해 4 비트가 필요하고 총 81x4x3 = 972 비트에 대해 값 (1-9 = 9 값 = 4 비트)이 필요합니다. 각 사각형의 번호를 매기면 위치 정보를 7 비트로 줄이고 각 사각형의 비트와 총 891 비트를 떨어 뜨릴 수 있습니다. 미리 정해진 순서를 지정함으로써, 총 324 비트 동안 각각의 값에 대해 단지 4 비트로 이것을 크게 줄일 수있다. 그러나 스도쿠에는 숫자가 누락 될 수 있습니다. 이를 통해 지정해야하는 수를 줄일 수 있지만 위치를 표시하기 위해 추가 비트가 필요할 수 있습니다. (위치 값) 우리의 11 비트 인코딩을 사용하여, 우리는와 퍼즐을 지정할 수 과 단서 11 비트, 예를 들어 최소 (17) 퍼즐은 187 비트를 요구한다. 지금까지 내가 생각한 최고의 인코딩은 각 공간에 1 비트를 사용하여 공간이 채워 졌는지 여부를 표시하고, 그렇다면 4 비트가 숫자를 인코딩하는 것입니다. 최소 퍼즐 ( n = 17 )에는 81 + 4 n 비트, 149가 필요합니다. 각각의 유효한 스도쿠 설정 데이터베이스가없는보다 효율적인 인코딩이 있습니까? ( N × N 퍼즐에서일반 n 을 다루는 보너스 포인트)
많은 퍼즐이 다른 퍼즐의 회전이거나 단순한 숫자 순열을 갖는 것이 나에게 일어났습니다. 아마도 필요한 비트를 줄이는 데 도움이 될 수 있습니다.
에 따르면 위키 백과 ,
클래식 9 × 9 Sudoku 솔루션 그리드의 수는 6,670,903,752,021,072,936,960 (OEIS의 시퀀스 A107739) 또는 약 입니다.
내가 수학을 제대로했다면 ( , 룩업 테이블에 대한 정보 (73) (72.498) 비트 나온다).
그러나:
회전, 반사, 순열 및 레이블 변경과 같은 대칭을 고려할 때 본질적으로 다른 솔루션의 수는 5,472,730,538 [15] (OEIS의 순서 A109741) 인 것으로 나타났습니다.
33 (32.35) 비트를 제공하므로 사용할 순열을 나타내는 영리한 방법이 전체 73 비트 아래로 떨어질 수 있습니다.