数独拼图的有效编码
指定任意9x9网格要求提供每个正方形的位置和值。单纯的编码可能会产生81个(x,y,值)三元组,每个x,y和值需要4位(1-9 = 9个值= 4位),总计81x4x3 = 972位。通过对每个方块编号,可以将位置信息减少到7位,每个方块减少1位,总共减少891位。通过指定一个预定的顺序,可以将这个顺序更彻底地减少到每个值只有4位,总共324位。但是,数独可能缺少数字。这为减少必须指定的数量提供了可能,但可能需要额外的位来指示位置。使用我们的(位置,值)的11位编码,我们可以指定线索的拼图nnn11n11n11n位,例如最小(17)拼图需要187位。到目前为止,我想到的最好的编码是对每个空格使用一位,以指示是否已填充,如果是,则接下来的4位对数字进行编码。这需要位,最小拼图需要149位()。是否有更有效的编码,最好没有每个有效数独设置的数据库?(用于解决一般的奖励积分从拼图)Ñ = 17 Ñ Ñ × Ñ81+4n81+4n81+4nn=17n=17n=17nnnN×NN×NN \times N 在我看来,许多难题将是另一个难题的旋转,或者是简单的数字排列。也许可以帮助减少所需的位数。 根据维基百科, 经典9×9 Sudoku解决方案网格的数量为6,670,903,752,021,072,936,960(OEIS中的序列A107739),或大约为。6.67×10216.67×10216.67×10^{21} 如果我做了我的数学权(),得出查询表的73(72.498)位信息。ln(6,670,903,752,021,072,936,960)ln(2)ln(6,670,903,752,021,072,936,960)ln(2)\frac{ln{(6,670,903,752,021,072,936,960)}}{ln{(2)}} 但: 当考虑到诸如旋转,反射,置换和重新标记之类的对称性时,本质上不同的解决方案的数量仅为5,472,730,538 [15](OEIS中的序列A109741)。 这给出了33(32.35)位,因此指示使用哪种排列的巧妙方法可能会低于全部73位。