![数独的逻辑:数独算法从入门到精通](https://wfqqreader-1252317822.image.myqcloud.com/cover/143/22690143/b_22690143.jpg)
1.3 数独中的排列组合
其实数独中的排列组合实例不胜枚举。这里仅举数例。其他一些实例分散在数独中的求解,设计和特性的章节中,请读者随时注意。
例1,大列首块一横条的错开(参看4.1.1.2节的模式法):欲使大列首块一横条321三字在中块内错开有几种方式?
错开乃是数独设计的精髓。数独大列首块一横条上三字如何在中块内错开,按数独的八个标本(见4.1.1.4)有两方式,一是三字分配到中块的横条的三格内,一格一字,这叫散开式。比如图1-12(a)。二是三字分配到中块的两格内,其中有一格两字龟缩到一起,这叫龟缩式,如图1-12(b)所示。
![](https://epubservercos.yuewen.com/100B59/11261860403034906/epubprivate/OEBPS/Images/figure_0017_0001.jpg?sign=1738900292-AtEwbzoD2r6d7qgBMYbk8meU9LnlLeWB-0-ed504f94169bec94533c2deb41f1aecd)
图1-12 散开式(a)与龟缩式(b)
欲求首块一横条三字如何在中块按散开式错开,须引用排列组合中的守位离位概念。横条三字321如原封不动叫守位,如果任一数字离开了原位叫离位。根据三字的守位离位情况即可摘出三字的两个错开方式。横条321三字有6个排列(=3×2×1=6),其成果表(排队列表法)如图1-13所示。
![](https://epubservercos.yuewen.com/100B59/11261860403034906/epubprivate/OEBPS/Images/figure_0017_0002.jpg?sign=1738900292-kldWyKHsJgTyfluQZHyANzyJgMoKRmJR-0-a4db374045a6ddef0d289f8739455d8e)
图1-13 三字守位与三字离位
其中只有0字守位才是对321的错开:
![](https://epubservercos.yuewen.com/100B59/11261860403034906/epubprivate/OEBPS/Images/figure_0017_0003.jpg?sign=1738900292-A4PTRg5S4zJRBHXPFNgpB0FAwWY9V74x-0-27cd3fe9dae69816329a40ada7d83198)
也可以运用以下思路得到上述结果(见图1-14)。
![](https://epubservercos.yuewen.com/100B59/11261860403034906/epubprivate/OEBPS/Images/figure_0017_0004.jpg?sign=1738900292-6LMiTECHUgthvtzxtSixKIHblpgR7GWt-0-f9b793320e4385a8ed68cc28424f3393)
图1-14 三字的散开式
再借以上的交叉线图即得321之两种错开方式:
![](https://epubservercos.yuewen.com/100B59/11261860403034906/epubprivate/OEBPS/Images/figure_0017_0005.jpg?sign=1738900292-U6PX3eiKgMMEzuAwDv4aS1BPhAKxcNo2-0-4aaa6db5ba1a603fad64e33f8a82d17a)
故三字横条的散开式两错开方式可规范化如下(见图1-15)。
![](https://epubservercos.yuewen.com/100B59/11261860403034906/epubprivate/OEBPS/Images/figure_0018_0001.jpg?sign=1738900292-K61jEKpo8GInDnNPWDxLb8LMo9P5utcW-0-945a9bb1bb215810228a037ecd33218a)
图1-15 横条三字之错开方式
由此图可见3个1、3个2、3个3彻底错开。
以上单条在中块内的错开方法,可以推广到大列首块的三竖条如何在中块内、末块内错开(见图1-16)。
![](https://epubservercos.yuewen.com/100B59/11261860403034906/epubprivate/OEBPS/Images/figure_0018_0002.jpg?sign=1738900292-qroXPK2IhwUpYJPMtN8MW6ZcniPYmwsG-0-ed9017423339c7d11e367915e0d6f0f3)
图1-16 三竖条之错开方式
结果为3个147条、3个258条、3个369条得到彻底的错开。
以上由首块单横条三字在大列中的错开,之所以可以推广到首块三竖条,乃是三横条每横条三字错开叠加的必然结果,见图1-17。
![](https://epubservercos.yuewen.com/100B59/11261860403034906/epubprivate/OEBPS/Images/figure_0019_0001.jpg?sign=1738900292-p3xlxCg7iOmt2ZYJ3tvp4pI9vwlJznHm-0-09c2e58ff0fed82d589f0c28782e2d6f)
图1-17 三竖条的错开是三横条三字错开的叠加
例2,一井块有多少个排列?设首块由九字(1、2、3、…、9)之321、654、987三条组成,如将三条条序打乱,再将每条的字序打乱,问可得多少个条序排列?多少个字序排列?
条序排列
今将321、654、987三条分别简称为①②③三条,如将三条条序打乱所得条序排列可用公式求之。由此可得以下
=3×2×1=6个(条序排列)。
![](https://epubservercos.yuewen.com/100B59/11261860403034906/epubprivate/OEBPS/Images/figure_0019_0004.jpg?sign=1738900292-QWV9BcBcYtcsTPVi7ZYMUokHIDbTGM4w-0-3c6b9358b15c80140f0b9504dc8d9ac9)
字序排列
每一井块有九格,每格填入九字之一,即九格填入九字,问共有多少字序排列?
![](https://epubservercos.yuewen.com/100B59/11261860403034906/epubprivate/OEBPS/Images/figure_0019_0005.jpg?sign=1738900292-reyZHDY75gogAbgc3RMIbfZ6pbmZAww1-0-6359ed0a1e042d56bc6771663ffb3e6c)
#1格内可填入九字之任一故有9方式;
#2格内可填入其余八字之任一故有8方式;
#3格内可填入其余七字之任一故有7方式;
#4格内可填入其余六字之任一故有6方式;
#5格内可填入其余五字之任一故有5方式;
#6格内可填入其余四字之任一故有4方式;
#7格内可填入其余三字之任一故有3方式;
#8格内可填入其余两字之一故有2方式;
#9格内可填入其余一字故只有1方式。
按a×b×c法则,今每件事各含9个成分,完成第一成分有9种方式,完成第二成分有8种方式……完成第九成分有1种方式,则完成九个成分共有9×8×7×6×5×4×3×2×1=362880个(方式)。
上式各因子不可颠倒,故答数为排列数(字序排列数),故一个井块可有362880个字序排列。
例3,一井块有多少个三条组合1?
据例2,已知一数独任何一个井块中恒有362880个字序排列,欲得出一个井块有多少个三条组合,务必求出一个三条组合能繁殖出多少个条序排列,又每个条序排列能繁殖出多少个字序排列来。因此下面分三个层次即三条组合、条序排列和字序排列三个层次予以图解。
设有一个三条组合如下(条序不拘、字序不拘)(见图1-18)。
![](https://epubservercos.yuewen.com/100B59/11261860403034906/epubprivate/OEBPS/Images/figure_0021_0001.jpg?sign=1738900292-8YfHT7aoXBtWN6SmSQCSfohnuPQS96B9-0-55c40291966e1578d5008e559defb255)
图1-18 一个三条组合可得1296个字序排列
由以上图解可以看出井块的任一个三条组合可得出6个条序排列,而每个条序排列又可得出216(6×6×6)个字序排列来,故一个三条组合可得出6×(6×6×6)=1296个字序排列来。一井块共有362880个字序排列(见1.3节例2“字序排列总数”),那么362880个字序排列是由多少个三条组合得来的呢?这是一个算术中的简单除法,故:
![](https://epubservercos.yuewen.com/100B59/11261860403034906/epubprivate/OEBPS/Images/figure_0021_0002.jpg?sign=1738900292-dJeMrDkE4USxgKRIKvbtnRvb8XlrcnUT-0-28d5b538b7f31350baaaef1cf795ca20)
这说明尽管数独五花八门,井块多达362880个,但最后均可归纳为280个三条组合,任何一个井块都逃不出这280个三条组合范围。作者已经得出这280个三条组合的明细表,读者可参阅本书中的附录一。
例4,模式的216个变种。
模式是指大列的上中下三正交条,每条三字如何在中块内分布开来。模式发生于前后两块间,当前块的上中下三正交条定下来后,再对三正交条选定任一模式并在后块中标示出有关的三个标本来,但在整理后块时允许每个标本的三字沿平行向任意滑移,每一模式可演变出216个变种来,其来由如图1-19所示。
![](https://epubservercos.yuewen.com/100B59/11261860403034906/epubprivate/OEBPS/Images/figure_0022_0001.jpg?sign=1738900292-Gp8fLLlyiWYs185qMDACJA2Cr7EzC7xL-0-2c061b2242c33b5625fe0a8b46165ed6)
图1-19216个变种之一
后块每竖条有三字(三成分),三字有=3×2×1=6个字序排列。如果三竖条每条取字序排列,则左中右三竖条的交叉线图如图1-20所示。
![](https://epubservercos.yuewen.com/100B59/11261860403034906/epubprivate/OEBPS/Images/figure_0022_0003.jpg?sign=1738900292-G0jX9Kvqgd1GkX6BJEcUt5NwNKNpSRPh-0-280dcf604faf084843d6b8911587187f)
图1-20 释216个变种之由来
因此,216个变种中任一变种都算是模式 [327]。比如:
![](https://epubservercos.yuewen.com/100B59/11261860403034906/epubprivate/OEBPS/Images/figure_0023_0001.jpg?sign=1738900292-M8hHU0mlehLnXMCKXbCoGDq6rKnkUKPX-0-4b930a255d99b4ac66ded5034212c75d)
例5,用避己法求中块的右条。
数独的一种错开方法叫避己法。比如从大列首块的左中两竖条,左条任取一字,中条任取二字,合成三字作为中块的右条,问可有多少方式?
![](https://epubservercos.yuewen.com/100B59/11261860403034906/epubprivate/OEBPS/Images/figure_0023_0002.jpg?sign=1738900292-qpM62LGsiJMHQeSX1RWpF6Esdb8L75Wt-0-826b38a6e329b126e19d65430eca0268)
图1-21 中块右条三字由来
由中块右条三字=首块左条一字+首块中条二字,可知中块右条含两成分:即首块左条一字和首块中条二字。
完成第一成分有3方式,因为首块左条有3字,每取1字有种方式。
完成第二成分也有3方式,因为首块中条有3字,每取2字有种方式。
故同时完成二成分,依a×b×c法则,计有=3×3=9种方式,这9个方式如图1-22所示。
![](https://epubservercos.yuewen.com/100B59/11261860403034906/epubprivate/OEBPS/Images/figure_0024_0001.jpg?sign=1738900292-NteJTW8bh4brywvfmYJra5GAYZhfNIa8-0-8d0298f3419816fe866dee85e68834a7)
图1-22 首块左条取一中条取二之组合
于是得出以下九个中块不同的右条(首块左条取一、中条取二时之中块右条,见图1-23)。
![](https://epubservercos.yuewen.com/100B59/11261860403034906/epubprivate/OEBPS/Images/figure_0025_0001.jpg?sign=1738900292-7QUVRz4wh194q1Rx39rOLESKhlliSIAz-0-ce6a17174d17319f2d3ff766ce0ade42)
图1-23 首块左条取一、中条取二所得之中块右条
以上所得中块的九个右条是根据首块左条一字加首块中条二字而得,倘若根据首块左条二字加首块中条一字还可得中块的右条九条,共计得图1-24所示的18个中块右条。
![](https://epubservercos.yuewen.com/100B59/11261860403034906/epubprivate/OEBPS/Images/figure_0026_0001.jpg?sign=1738900292-4vRvN9TVYmXahrKwg5z8FiTWavY1KCeF-0-fcc398e208f45352f5490102a59aa234)
图1-24 中块各小列所得的18个组合
仿此,可得出中块的18个左竖条和18个中竖条来,如图1-24所示。这就是附录四中注释*4所得的附图4-13的由来。
例6,理顺的实例
在数独的大列(或大行)中,使平行向上同行异字或同字异行就是错开。凡遇到同小列(小行)有同字的情况便叫作重复,理顺就是要消除重复的问题。理顺有一条总则:横向理顺,靠竖条内易序;竖向理顺,靠横条内易序。易序即是重新排列的意思。
现举一例,设已有一大列,三块每三竖条都沿小列发生重复,试问如何才能理顺?
[解一] 把原大列照抄下来,欲使三块相互错开,并不是把每块九字全部打乱进行九字排列,这是大包围,不如使用小包围,将每横条三字打乱进行三字排列,得图1-25。
![](https://epubservercos.yuewen.com/100B59/11261860403034906/epubprivate/OEBPS/Images/figure_0027_0001.jpg?sign=1738900292-uQauRyWuKdTaAlk6At7DBZDp25zPvUfC-0-6bba41a708ce7cba4879a6055364b012)
图1-25 大列各横条的6个字序排列
各横条的三字排列有=3×2×1=6个。设大列首块之上中下三横条为
、
、
,为保证首块每横条在三块内错开,从首中末三块内取出同成分异字序,比如首块的
在首中末三块内分别取
、
、
;首块的654在首中末三块内分别取
、
、
;首块的
在首中末三块内分别取
、
、
。结果如图1-26所示。
![](https://epubservercos.yuewen.com/100B59/11261860403034906/epubprivate/OEBPS/Images/figure_0028_0001.jpg?sign=1738900292-tzGNAG3qNKMOQLC2KYqUQiZVFjZDiIrS-0-4027cbbcc841b8df2ea235ed8246f0b3)
图1-26 理顺后的大列
首中末三块相互错开,即理顺了。此理顺归功于排列组合的有效运用。
[解二] 为了机动地圈选出一个多成分组合的各个字序排列来,作者特设计出一个“滚环法”来。什么是滚环法?
假设你有一个3字组合,想要把它的6个(=3×2×1)排列通通圈选出来,你可将此三字组合连写成3组,每一组配上一个环,每一轮、每环套上一个字,3个环套上3个不同字,待6轮套完即得出6个不同排列来。
连写三组: 321321321
每组各配一环:321
321
321
每一轮用一环圈上一个字:3②1 32① ③21
如此则得213一个排列。
六轮后乃得出六个排列,如表1-1所示。
表1-1 滚环法得出6个排列
![](https://epubservercos.yuewen.com/100B59/11261860403034906/epubprivate/OEBPS/Images/figure_0029_0001.jpg?sign=1738900292-yYdHsdE5xpwFtQQJDhc2CBLNZ2BQHyGd-0-64574ea873d72fe6f8a62f78643559d7)
这样便把6个排列,一个不漏地圈选出来。
已知大列有三井块,欲竖向理顺,必须对各横条做条内易序即圈选出同小行中的异字来。为此须将原大列照抄下来,并将它横向扩为三倍,得九个井块(见图1-27)。为保证同行异字,圈选时必须圈选九组三同字来,且每组三同字务必圈自:
三个不同的井块,
三个不同的大列,
三个不同的大行。
![](https://epubservercos.yuewen.com/100B59/11261860403034906/epubprivate/OEBPS/Images/figure_0030_0001.jpg?sign=1738900292-l4lMdlXoQCy2TE6RTxG4Y73A1v6KNnZv-0-adab544026c7bd3bca82aa7a91e426ff)
图1-27 滚环法所得的理顺大列
于是得出三块相互错开的大列来。
滚环法(又名局部圈选清单法),是求排列组合的一种方法,这再一次说明了数独需要排列组合的相关知识。
[解三] 此法根本不用顾及大列中末块排列的存在,先由首块采用避己法或模式法求得中块,再用补差求得末块。以所得出的中、末块取代原有的中、末块(见图1-28)。
![](https://epubservercos.yuewen.com/100B59/11261860403034906/epubprivate/OEBPS/Images/figure_0031_0001.jpg?sign=1738900292-drFqd2FM5sR8wDZuW9v4uD8dNw98MuNv-0-783c95df8a5a799b93d482d54b830a6e)
图1-28 用模块模式加补差所得理顺大列
解三运用了模块法(即避己法),而避己法的第一步骤则是排列组合的应用,故解三仍是用排列组合进行理顺的。