购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

进阶解法

3 唯一余数法

☆定义

唯一余数法是最基础的几种方法之一,它是指一个单元格内有8个数字无法填入,那么其必然是余下的那个数字。

这是最基础的方法之一,也往往是最容易被忽略的一种情况。最基础的情况是:一行(列、宫)内填入8个数字之后,剩下的一格便可以填出来。然而唯一余数实例往往较难。例如下题已经到了难点,经过仔细观察后发现,星格内仅能填入9,因为其他数字都在该格所在行、列、宫中出现过了。

唯一余数不仅有单纯依据已知数字或填出数字进行排除的,更有一些是通过数组和区块进行排除的。该内容在区块和数对部分会进行讲解。

4 区块排除法

☆定义

区块排除法是基础方法中极为重要的一种,在绝大多数初级以上的题目中,都需要使用这种方法。

区块方法一般指:利用一个构造出来的含某个数字的区块,对区块所能影响区域内其他格该数字的排除。

例如下面这种情况:

图中第一宫的5在椭圆形区域(C1和C2)之中,该区域影响C行其他格,那么无论是哪种情况,这些格中的5都能被排除。

于是在这道题目中我们可以看出,因为一宫的5区块进行排除,排除掉C7、C8、C9的5,那么三宫之中,5在星号标记的格中。

☆作用

既然讨论了什么是区块,接下来就该讨论怎么使用区块。在基础的题目中,一般区块的作用就是三种类型:①排除。②数组。③唯一余数。用的最多的是排除,对观察能力是个考量。至于后面两种类型,如果对区块的标记恰当,观察起来会更容易一些,前提是这两个技巧自身得过关。总而言之就是一句话:关于怎么用区块并不是很难的问题,难点是怎么找区块。

☆观察

找区块这种事实际上是对经验水平要求比较高的,刚开始接触这一步的时候很多人会极其陌生,出现能理解但就是看不到或看得很慢的情况。对于这种情况,主要方法就是练习。练习是通过理解区块的原理和构造,加快寻找区块的速度。次要方式是通过对标记习惯的熟练与完善,达到水平的提升。

这里总结了一些常见的区块模式,分为单排除区块和双排除区块两种。

☆常见类型

单排除区块:只做一次排除形成的区块。

类型1:直线型

直线型是最基础的区块类型,也是最常出现的区块类型之一。

类型2:直角型

此种类型对观察难度的要求有些提升,也经常出现。

类型3:T型

该类型本质上和直角型是相同的,但是标注起来可能会更不方便。

类型4:中央型

中央型也是极其常见的类型,请务必注意。

接下来是双数排除形成的区块。

双排除区块:在横纵两方向上各做一次排除形成的区块。

类型1:十字型

极其容易出现的类型,在中级题目里出现得尤其多。另外就是提示数比较少的题目里出现得也比较多(一些网站上有最少提示数的数独题库,难度各异,但普遍来讲这种类型的区块是大量出现的)。一般一个宫内数字较少且有至少两数字相邻的时候,出现的频率还是很高的。

类型2:伪十字型

比十字型多了一个数,但是观察难度往往会更高一些,因为十字型按照数字形状分布往往更容易找。伪十字型在题目中也很常见。

类型3:工字型

此种算是比较不好找的类型了,但还是很常见,所以练习的时候一定要多加注意。

基础区块类型就这么七种。进阶版有双区块(连用两次区块),大家可以自行体会,道理类似,此处不赘述。

另外图中所示仅为范例,几种区块图示在旋转、翻转或以一定规则更换数字后依然有效。

☆标记

刚才上文提到了区块的标记。区块的标记一般用于观察到区块,但是并没有直接得到有效结论,所以可以先做标记,方便后期观察。

一般区块的标记以邻线标记数字比较合适,例如:

这样也能加深对区块的理解。

但是,关于不相邻的格子形成的区块和三个格的区块,这种标记法的弊端就显现了。这种情况下可采用的方法是:在最左(上)侧进行数字标记;用小数字在相关格内标记等。

☆区块与排除

在这个例子里进行观察,可以看到四宫D2和D3的4区块,能排除D7的4。由列排除,可以得到H7=4。

☆区块与行列摒除

观察此题。通过对数字2进行行列摒除可以得到:

对3列摒除得到B3C3的2区块,再通过宫摒除A2;同时观察A行的2,经过摒除后得到A5=2(六芒星处)。

☆区块与行列摒除Ⅱ

在这个题目中,对数字7进行观察。首先观察第四行,得到7在D7和D9之中,因此E8和F8的7被摒除。其次观察第8列的7,得到C8=7。

☆区块与唯一余数

这是一个区块技巧与唯一余数结合的例子。仔细观察第一列,对数字6进行摒除,得到四宫关于6的区块(椭圆形标出)。排除同一宫的D2=6后可以通过唯一余数得到D2=9。

如下图所示:

5 数组解法

5.1 隐性数组

☆什么是数组

当一个单元(行、列、宫)的某n个数字仅在该单元内某n格中时,称为该单元内该n个数的数组。同一行、列或宫中出现数组,则其他格不能再出现该数组中所含的数字。

数组分为显性数组和隐性数组。某N个数一定在位于同一单元内的某N个格中,为隐性数组。

☆图示

观察B行,通过对数字3和4进行排除,得到该行的3和4在椭圆形区域之内,顺序不确定,但必然其中一格是3,另一个格是4。这意味着两件事:

①这两个格内不可能填入别的数字,因为尽管顺序无法确定,但这两格的位置已经完全由这两个数字占据。

②这两个格所共同影响的区域不能再填入这两个数字。

在此题目中表现为:椭圆形区域内只可能存在3和4,而第三宫和B行内其余单元格不再可能出现3和4。

仔细观察H行的数字1和2,显然它们在圆方形区域之中占据位置。同样思路可以看第七宫的1和2,它们占据了两个阴影格,形成了1和2的隐性数组。

☆实例1

在实例1中,我们可以仔细观察。观察第一宫可以发现,A2和B2构成5与7的隐性数组,占位之后,可以得到B1=6,如下图所示。

☆实例2

在实例2中对H行进行观察。通过对数字3和8进行排除,得到行内的隐性数组(如下页图阴影格)。数组占位,得到该行中9只能在星格位置。

☆实例3

观察实例3,很明显有B7,C7是1与4的隐性数对(7列),那么观察第三行可以知道C3和C8则是2与7的隐性数对。于是C4,C5,C6形成了含6和9的区块,加上一宫里的1区块,得到星格内唯一余数A5=8。

5.2 显性数组

☆图示

图中很显然可以观察到,A行椭圆标记的两格由3和4组成(顺序不确定),为上一节提到的隐性数组;菱形格则是由8和9组成的(顺序同样不确定)。但是区别在于:椭圆格的数组是两个数只能在两格,而菱形格的数组是两格内只能有两个数。对于这种数组,我们称之为显性数组。实践中,多数题目中隐性数组更容易观察。在一些难度偏高的题目里,经常会出现观察难度极高的显性数组,因此两种数组技巧都必须练习纯熟。

☆Q&A:为什么隐性数组更容易观察,却是隐性的?

这是因为在数独发展的早期,很多技巧是需要计算机的。计算机算法与人脑算法不同,第一步即是自动生成每格的候选数,因此,显性数组在候选数生成之后能立即被计算机察觉,而隐性数组则需要经过多一步的排除之后才能出现,因此通过排除形成的数组称为隐性数组,而通过唯一余数形成的数组称为显性数组。其实并没有必要,对于一个还剩m格的行,确定其中n格是个数组,那余下的就是(m-n)数组了。

☆显性数组

此题中出现显性数组最常见的使用形式。即C4,C5,C6的2,3,7显性数组,删除宫内其他格内2,3,7,得到B5=8。

☆实例:显性数组与排除

在这个案例里我们可以很明显地看出D9,E9关于4与5的显性数组。这个案例里不仅能够排除A9和B9的4,也可以与A7的5一同对九宫排除得到I8=5。

☆实例:显性数组与唯一余数1

观察第九列,很容易得到隐性数组2与6,得到F6=4。而观察显性数组可以得到A9,D9,E9的1,5,8显性数组,用唯一余数得到F9=4,可谓殊途同归(个中缘由大家可以自己想一下)。

☆实例:显性数组和唯一余数2

这是一道数独题目的局部。仔细观察可以看出,A2,A4,A6形成6,7,9的显性数组,进而通过唯一余数法可以知道星格(A1)内是8;九宫内G8和I8形成1和9的显性数组,那么通过I行对唯一余数进行观察可以看出六角星所在格(I7)是5。如下图所示。

☆显性数组和唯一余数3

经过六宫7和9的显性数组和8行1,3,6,7的显性数组,得到唯一余数H7=5。

☆实例:显性数组和区块1

容易看出H行5,6,7,8四数组,其中6仅存在于H5和H6之中,构成了基于显性数组的区块。由该区块,可以删除I4的6。得到I4=7。如下图所示。

☆实例:显性数组与区块2

首先是4列3578(蓝色格内)的显性数组,删除A4的8,在第二宫形成A6和B6的8区块。该区块删除F6的8,得到第六行F1F2的8区块,对第五宫内8进行删除。此时观察3列,则仅有A3=8。

☆实例:显性数组和区块3

此题中,H行2378显性数组,删除H7的3,得到九宫3区块,得到七宫G3=9,H3=3。

☆显性数组和隐性数组

此题中首先可以注意C7和I7形成了4与6的显性数组,因而得到六宫之中D8,D9,F9是569的隐性数组,故而形成E8和E9的4区块,得到五宫F5=4。

6 唯一矩形法

☆定义

一个正规的数独,必然有且只有一个答案。若是某种条件(称作条件A)下,盘面内存在两种及以上的可能情况,并且无法排除其中任意一种,那么会与题目规则违背,因此条件A是不成立的。

常见的唯一性解法有唯一矩形法和Bug法两种,并以唯一矩形法居多。

☆唯一矩形

当盘面内形成如上图中所示的矩形的情况下,这四个格内的ab有两种可能分布。这种情况叫作致命模式,因此,无论如何要避免这种情况的发生,以此做出的删减,叫唯一矩形删减法。

☆实例1

在这个题目中,B3和C3是8与9的数组;A7B7C7是789的数组。此时如果A7=7,则B7C7形成8与9数组,与B3C3构成矩形。由上面的讨论,要避免这种矩形的出现,那么A7不能为7,由列排除得B7=7。

☆实例2

一个比较难观察的实例。第四宫E2E3为2与6隐性数对(宫摒),I3的候选数为2与6(唯一余数),且I2I3中必有6。那么,为了避免这种矩形的产生,有两种途径:删除I2I3中的候选数2得I3=6,或删除I2的候选数2与6得I2=9(唯一余数)。

☆分类

唯一矩形依据其机制分下面几类,其中以类型2和3最为常用。

类型1:

左边ab数组已经确定,右边ab确定在三格之内如图。为了避免形成致命模式,星格内一定是ab之一。

类型2:

左边ab数组,右边数字a限定在两格之内,因此这两格内没有b,否则形成致命模式。这是最为常用的一种。

类型3:

左侧ab数组,右侧一格内候选数为ab,那么删除另一格内的候选数ab。通常情况下删除以后会出现唯一余数或是数组。

类型4:

左侧为ab数组,右侧两格内候选数都是abc,那么这两格中必然有一个c,通过形成c的区块对其他区域进行摒除。

类型5:

左边一列内ab形成显性数组,右边一列内a仅在此两格之中。这种情况下,右边一列这两格中不能含b。

☆实例1

右侧B9和C9是2与5数组,B5和C5是必含2的区块,构成了类型2,因而排除该区块中的5。由列排除,此列5在E5。

☆实例2

观察四个蓝色格,右侧两格是7,8数组,左侧两格内是8的区块,构成类型2,因而删除区块内的7。由列排除知6列E6=7。

☆实例3

观察第二宫的4与9数对,第一宫内有一个即将成为4,9的数对。这是类型3的典型案例,易知A2=2。

☆唯一矩形的误区

唯一矩形绝对不能将四个数处于四宫之内!

有人提出A5A7和H5H7的5,6可以构成唯一矩形,得G5为8,这是不正确的。唯一矩形的条件是:盘面内存在两种及以上的情况并且无法排除其中任意一种。然而当四个角分别处于四个宫时,依据宫排除,可以排除到仅剩唯一解,是与唯一矩形的条件矛盾的。

7 Bug删减法

Bug删减法是唯一矩形的极限情况,即对全盘未知数使用唯一矩形。

唯一矩形的核心思想是避免出现那种删无可删导致多解的情况,Bug删减法的核心也在于此。Bug删减法的全称是Bivalve Universal Grave,直接翻译是双壳全体坟墓,简称Bug,不仅是简称,而且是与其致命模式一样不可以出现的表示。

使用该技巧必须处于绝大多数格内都只含两个候选数,只有少数格内多余一至两个候选数的情况。如果非只含两个候选数的格过多,建议不要使用该方法。

☆Bug删减法严格表述

有唯一解的数独不可能出现如下情形,即每个未知格有且仅有两个候选数,且每个候选数在相同的行、列、九宫中只出现两次。

☆用法

①删除某个格子的候选数A会出现上述情形,就可以确定那个格子一定是A。

②删除某两个数字A和B(不一定在同一个格)会出现上述情形,那么这两个数不能同时删除。如果有一个事件M让A和B同时被删除,那么M一定不成立。

③如果有某n个数字A~N,全部被删除时会出现上述情形,那么这些数字必然有至少一个是成立的。

☆实例1

在这个案例之中,首先可以确定的是,全盘的未知格中,除了F9之外均只含两个候选数字,符合Bug删除法的使用条件。那么显然,关键数字就在F9之中。很明显可以发现,删除数字1之后,形成了跨四个宫的Bug,是不应该出现的。那么就意味着数字1是不能被删除的,这一格是数字1。这种离Bug仅有一个数字区别的模式,称为Bug+1。

Bug删除法的前提是盘面内未知格中仅有极少数不是双候选数,并且那些仅有两个候选数的未知格还要符合“每个候选数在相同的行、列、九宫中只出现两次”的条件,因此Bug删除法是相当罕见的,可能1000道普通的题目里才有一道。

8 Xwing及其延伸

☆定义

Xwing,又名二链列。用一个简单的图说明如下。

如上图所示,第二列的3必然在两个五角星格内,第八列的3必然在两个心形格内。那么只有两种可能,即左上(C2)取3,同时右下(G8)取3;或者左下(G2)和右上(C3)取3。无论哪种情况,C行和G行的其他格里,都不能是3。在此基础上,可以对一些宫进行摒除,或通过寻找出一些受影响的单元格摒除3之后的唯一余数或数组来解开下一步。

Xwing的使用条件:某数在某两行里可能所在的位置必然在某两列之内,或某数在某两列里可能所在的位置必然在某两行之内。

☆实例1

在这个例子里,我们可以明显地看到,2列和8列对数字1形成Xwing,通过摒除得到A5=1,即六芒星处。

☆实例2

通过Xwing删除候选数2。此题中仅可以使用此四格Xwing,不能使用D3、D7和H3、H7构成Xwing,因为第三列除了D3和H3之外还有B3可能是2,不满足Xwing的使用条件,因此不能这么用。

☆Xwing与唯一余数

阴影四格构成Xwing,得星格是唯一余数1。

☆拓展和延伸

关于Xwing的拓展之Swordfish(直译名称是剑鱼)如下图。

观察数字3,其实是多了一个数字的Xwing。进行摒除。

☆剑鱼与排除

观察4的分布可以得到下图,结合D2的4进行摒除得到F行仅有红心处是4。

需要注意的是,上题中A9的3占据了剑鱼的一个格位。剑鱼的前提是:某数在某三行里出现的格必然在某三列以内。因此,在不改变前提的情况下,一些单元格可以适当缺损。

☆剑鱼与唯一余数

通过对8进行观察,得到星格内唯一余数是5。

9 XYwing

这道题目,用之前的方法观察,很难看出有效的结果。

不过如果用XYwing就会很容易。

简单地讲,XYwing就是一种这样的结构,如下图:

三个格子里分别是xy,xs和ys。这样的话,无论左上角那个格子为x或者y,那么右下角的格子里都不可能是s,因为左下角和右上角的格子里无论如何都会有一个s存在。

☆XYwing应用

回过头来看刚才那道题目:

仔细观察这三个用粗线条框起来的格子。C6的6,7就是xy,而B4的5,6和C8的5,7就分别是xs和ys。用XYwing解题目,首先要确定出这样的构造,然后要找xs格和ys格共同影响的格子,并删除里面的候选数s。

在这个图里,表现为删除B7和B8的s,也就是5。然后再观察可以发现,三宫的5只可能存在于三个格之中,删除了两种可能,就只可能是在C8了。

通过XYwing删除候选数之后,题目的构造往往能够变化,结合基础技巧,就能很灵活地解开题目了。刚才这道题目,删除候选数之后,是通过宫摒除解开题目的;更多的情况往往是会出现唯一余数。当然还有一些例子,删除候选数之后能够形成显性数组。总之就是条条大路通罗马,删除候选数这一步是题眼,过了这一关之后,后期往往会轻松解开题目。

☆XYwing观察

我们不妨多看看几个案例。

左图是能一次性在两个地方删除数字的,你可以观察阴影三格;还有右图,这是非常常见的情况,当你在快做完卡住时,往往都是这种情况。

删除B2和C8的2

删除I4的9

你可以试试不标候选数观察下题。

Tips:

哪怕是在六阶数独之中,不标候选数观察XYwing,也是有难度的。所以当题目有难度时,除非记忆力极好,否则该标的候选数还是应当做出标记的。

在有候选数的情况下对XYwing进行观察,必须要注意仅有两个候选数的格(即双值格)。这一点是非常关键的。在解题时,需要注意的是,在多数题目之中,XYwing往往出现在一个拥有很多双值候选的盘面上。如果盘面内多数未填出的单元格内候选数都是两个以上,不建议对XYwing进行观察。

10 链

☆定义

链是用来表示两个命题间关系的符号,用来记录数字与数字间的存在关系,是高级技巧的核心内容。具体而言,对两个命题A和B做如下规定:

①若A&B不能同时为假,即为强链,记为A==B;

②若A&B不能同时为真,即为弱链,记为A—B;

这里我们研究的命题一般是“某个格为某值”类型的。

☆实例

先拿一例,分析强弱链。

图中ABCDE五条链。

对五条链进行分析:

A:B5(8)&B6(8)如果同时为真,那么就出现重复;如果同为假,这一宫就无8。所以这两个命题既呈强链又呈若链。此时仍然使用强链符号表示,即B5(8)==B6(8)。

B:D7(1)&D7(8)这一格只有这两个候选数。很明显不能同时为假,亦不能同时为真,同时呈两种链的性质。D7(1)==D7(8)。

C:G6(1)&G9(1)不能同时为真,但可以同时为假,呈弱链。G6(1)—G9(1)。

D:H5(1)&H5(9)同一格内,可以同假,呈弱链。H5(1)—H5(9)。

E:F5(4)&F7(8)比较特殊的结构,不能同假(否则出现两个1),亦不能同真(否则F2无数可填),因此同呈强链和弱链的性质。F5(4)==F7(8)

在一个数独之中,因为终盘是唯一固定的,故而对于任意两个“某格==某数”的命题,必然是“一真一假”“同真”或“同假”,前两者都是强链,第一种情况和第三种情况都是弱链。

链之所以为链,是因为它有能像链条一样串起来使用的性质。常见的链分为两类,即单数链和多数链。

10.1 单数链

单数链,顾名思义是指针对一个数字的位置关系进行强弱链的判断。常见的单数链一般是由奇数条链构成的环,其中又以五条链构成的居多,因为形状似鱼,这种方法称之为TurbotFish(多宝鱼)删减法。

多宝鱼往往是由数条行列内的链和一条宫内的链构成,其实是一个长歪的Xwing。

看下面这个题目:

对数字7进行观察,第一行中7仅可能在A5和A8,记强链A5(7)==A8(7)。同样,第六行记强链F5(7)==F7(7)。列内弱链A5(7)—F5(7)。

那么将上面三条链串起来得到:A8(7)==A5(7)—F5(7)==F7(7)。这是一条长度为3的7的单链。由链的性质,A8(7)和F7(7)不能同假,即它们是强链。

在此基础上,假设一个命题M,M和A8(7)以及和F7(7)都分别是弱链的关系。那么引入链条成为环:M—A8(7)==A5(7)—F5(7)==F7(7)—M。由此基础上引入刚才的简化:M—A8(7)==F7(7)—M,由强链的性质,可知M必为假。

那么在此题中有哪一个命题是与A8(7)以及F7(7)都分别呈弱链的关系呢?这种情况下就需要找两个能共同影响的单元格。因为这两格不在同一行列,所以共同影响区域(即目标格)必然与其中某一格同宫,与另外一个格同一行列,也即其中一格对另外一格所在宫进行行列摒除,所能影响的数格即是目标格。在此题中,A8对F7所在的第六宫进行行列摒除,能影响D8格,因此D8格即是目标格,删除D8格(即星格)内的7,得到D8=3的唯一余数。当然亦可通过F7对第三宫进行摒除删除B7的7,不过对解开题目没有太多的帮助。

☆简化推论:对于仅考虑一个数字在盘面内位置的单数链而言的方法:

Tip1:A==B—C==D等价于A==D

Tip2:M—A==B—C==D—M推论得,M必为假。

Tip3:寻找M,往往在A对D所在宫能够影响的格中,或者D对A所在宫能影响的格中。

观察一条比较长的链。在下图中对数字1的单链进行观察,出现一条1的单链,删除D5和E5的1,五宫中仅有F4=1。此处实为7条链。

10.2 区块链

☆Grouped链(区块链)

和基础的链一样,不过部分元素是区块。

☆实例1

这是一个极其有趣的盘面。将椭圆形两格看成一个整体,观察数字4形成含区块的链:C5(4)==C1(4)—D1(4)=={D4,D5}(4)。

与普通的单数链思路相同,我们需要找一个事件M,它与链两端的事件都是弱链关系。也就是找链两端共同影响的区域。很明显这个区域是F5,即可以删除F5的4。

删除之后会发生什么呢?判断F5格剩余的候选数,删除4之后是2与6。注意同一行的F9的候选数也是2与6,也就意味着通过链删除之后形成了2与6显性数组。那么这个显性数组又有什么用呢?答案很明显:能够让F7出现唯一余数1。

☆实例2

在这道题目里,对数字2进行观察。可以发现一条单数链:

通过链我们删除了F6的2。这有什么后果呢?

显然可以发现五宫中D4和F4组成了2和8的隐性数对。占位排除,得到F5=4。

☆实例3

此处使用的链之中,包含了两个区块。

删除星格的8,得唯一余数5。

☆唯一矩形和链

首先观察左边三宫。为了避免出现1与4在三宫内的唯一矩形,得到结论:{E1,E3}(4)==I1(4)。那么删除强链两端共同影响的区域内的数字4,得D1=1。

10.3 多数链n-XYwing

最常见的多数链是ab-bc-cd-de-…-na的类型,最典型就是XYwing。这种情况下,删除长链首末两格共同影响格内的数字a。

多数链通常情况下会是三到五条,但也会出现更多条链的情况。这种情况比较难观察。但无论如何要重点注意找仅有两个候选数的格,并清楚分析其中的联系。最简单的多数链是XYwing,仅是三个数字,复杂一些可能更多,例如下面一题:

以B2,D2,D5,D3,B3的顺序观察,那么可以得到一条长链:

B2(6)==B2(1)—D2(1)==D2(3)—D5(3)==D5(7)—D3(7)==D3(4)—B3(4)==B3(6)

那么代入模式中,易知ab-bc-cd-de-…-na中首末两格中的a即是此处6,那么删除首末两格共同影响的格中6,得C2=9,继而仅使用排除法即可以突破全局。

在此题中,有些地方既是强链也是弱链,然而仅用弱链即可得到推论,所以此处使用弱链表示。

Tips:

☆强链也一定是弱链?

强链指的是不同假,弱链指的是不同真,它们并没有交集,没有包含关系。在基础性的链里面大部分情况下的强链正好也符合弱链的定义,但并不是强链包含弱链。而一些链的拓展中,的确存在是强链而非弱链的情况。

☆还有什么链?

还有一些暴力链(Forcing chains)、动态链、Nishio链等说法,这些是针对非逻辑解数独提出的方法,主要是用于解开超难题,需要通过试数或计算机分析得出,此处不予赘述。 6nNt5kSFBDvwJEunCGG7LTLgkbPYZx70d+NgLvBpSQjQa5p6qyP8jZb7h1hGkP9y

点击中间区域
呼出菜单
上一章
目录
下一章
×