EH的数独杂谈#9-1 SDC初步
--------目录--------
一、SDC的基本形式
二、SDC的拓展形式
1. 外部扩展的SDC
2. 内部区块的SDC
3. 自噬SDC
三、SDC的观察
四、欠一数组——SDC的另一种视角
----------------
大家好!第9单元将会介绍另外一种用途还算广泛,功能极其强大的结构——SDC(Sue de Coq,融合待定数组)。SDC与我们学过的数组有类似之处,但它在形式上通常分布在多个区域(行/列/宫)内,观察起来有一定难度。
让我们先从一个最简单的SDC实例讲起。
一、SDC的基本形式
SDC的基本形式见图9-1.1。
让我们把目光放在红框框起来的两格,里面包含1259四种候选数;在与这两格同宫的格子r1c8内含有候选数19,在与这两格同列的格子r6c7内含有候选数25。现在把这四格内的19涂成橙色,25涂成紫色。
现在想一想:红框里的填数形式会是怎样的呢?
红框有两格,显然这两格要么都填橙色,要么都填紫色,要么一个橙色一个紫色。但在本例中:
(1)如果都填橙色(即都是19),则3宫内19两个数字占了3个单元格,违背数独规则。(2)如果都填紫色(即都是25),则7列内25两个数字占了3个单元格,同样违背数独规则。
所以只剩最后一种情况,即一格填橙色(1/9),另一格填紫色(2/5)。
接下来想想这种情况意味着什么:3宫现在有两格橙色(r1c8+红框内1格),即3宫内形成19数组,那么3宫内未被涂色的单元格r123c9都不能是1和9。同理,7列也有两格紫色,即形成25数组,那么7列内未被涂色的单元格r49c7都不能是2和5。从而产生图中涂红色部分的删数。
在阅读后面的内容前,请确保你已经理解了上例的分析。我们注意到,这个例子的红框部分虽然是4种候选数的融合,但配合其他区域的单元格,可以把它拆解为两个不同区域的数组,当做数组去使用。这种形式上融合,但在逻辑上可以分离为多个数组并且分开使用的候选数结构,被称为Sue de Coq。这个技巧是以发现者Sue de Coq的名字命名的。
或许有读者已经在思考这种技巧如何去观察了。但是不急,我们先了解一下它的拓展形式,然后再进行总结。
二、SDC的拓展形式
1. 外部扩展的SDC
在上一个例子中,我们找到了一个红框区域(占2格),里面包含四种候选数abcd。然后,我们在红框的所在宫和列内,又各找了一个只包含ab和只包含cd的单元格。这样,结构所占的单元格数和涉及的候选数区域总数相等,都为4。(这句话没理解也没关系,之后还会进一步解释。)
但有时情况并不完美,比如下面的图9-1.2。
我们依然关注红框,内部包含了1289四种候选数。在红框所在列,我们找到了只含19的单元格r9c5;在红框所在宫,我们并没有直接找到包含28的单元格。相反,我们却找到了两格r12c4,它们不仅包含28,还恰好多出一种数字7。
现在把19涂成橙色,28涂成紫色;这两个“多出来”的7涂成绿色。我们再次对红框内的填数情况进行讨论:
(1)如果红框内两格都是橙色(19),则5列内19两种候选数占据3个单元格,违背了数独规则。
(2)如果红框内两格都是紫色(28),那么红框和刚才找到的r12c4两格,这四格内只有278三种候选数了,还是违背数独规则。
所以,5列内r129c5中存在19数对,2宫内r12c45中存在278数组。从而产生涂红色部分的删数。
看到了吗?虽然多出一个7,但是分析的思路是完全一样的!
我们再回看这个例子,它一共涉及5个单元格,而候选数区域也包含5种:19,28,7。它仍然是个合格的SDC。如果我们草率地把红框定义为SDC的“内部”,而宫内和行/列内另找的单元格(在本例中是r12c4和r9c5)是SDC的“外部”,则这一例的7就可以算作“外部”拓展出的候选数,但这些7仍然是SDC整个结构不可或缺的一部分。
2. 内部区块的SDC
刚才例子里“似乎多出来”的那个候选数7,出现在SDC的“外部”。现在我们来看多出的候选数出现在SDC“内部”的情况,如图9-1.3。
我们仍然关注红框,里面包含了5种候选数:24569(内部)。在其列上找到一个只包含56的格子r7c9,在其宫内找到一个只包含49的格子r2c8(外部)。
前两个例子中,我们从“外部”找到的格子,其包含的候选数完全覆盖了“内部”的候选数类型(不信就回去看看是不是这样),但这次我们只找到了56和49,而“内部”多出了一种候选数2。
现在,把56涂成紫色,49涂成橙色,“多出来”的2涂成绿色。因为有三种颜色,想要探讨红框内的填数情况会更复杂一点。但我们肯定知道:
(1)绿色(2)最多只能填入1个,这是很明显的。
(2)紫色(56)最多只能填入1个,否则9列上56两种候选数将占据3格,违背数独规则。
(3)橙色(49)最多只能填入1个,否则3宫内49两种候选数将占据3格,违背数独规则。
(4)绿色、紫色、橙色一共要有3个,因为这三格里所有的数字都被涂色了。
这相当于解不等式组x≤1,y≤1,z≤1,且x+y+z=3。很显然,x=y=z=1,也就是红框里必须恰好有一格紫色,一格橙色和一格绿色,也就意味着:
(1)恰有一格紫色——r1237c9在9列上构成56数对。
(2)恰有一格橙色——r123c9和r2c8在3宫内构成49数对。
(3)恰有一格绿色——r12c9内一定有一个数字2,即数字2在红框内事实上形成了区块。
现在回来看图中涂成红色的删数,你是否已经明白了它的原理呢?
这个例子也涉及5个单元格,同样包含着5种候选数:56,49,2。这个“似乎多出来”的2出现在SDC的“内部”,是SDC不可或缺的一部分。
3. 自噬SDC
-注:秩理论不是这一部分的前置知识点,但学习秩理论将有助于从另一个角度理解这一部分的内容。-
“自噬”是一个常见而又有点神秘色彩的概念,这是本杂谈系列第一次提到它。笼统地讲,结构删数反过来删去了结构某些组分甚至结构本身的现象,就称作自噬。
SDC就是存在自噬现象的结构之一。让我们来看图9-1.4。
读者可以先将这张图里r9c5的4(就是我划叉那个)先涂掉,看看能不能理解涂红色部分的删数。
在此基础上,我们来探索一下,r9c5多了一个4之后,会不会影响这些删数。
我们注意到,虽然多了这个4,但分析红框的填数方式时结论是不变的,即一定恰有一格橙色和一格紫色,在5列和8宫内构成数组。
本例最大的特点在于,5列和8宫内的数组同时涉及了候选数4。因此,虽然形式上它是6格而只涉及5种候选数(12,479)的结构,但候选数4跨了两个区域(5列和8宫),所以候选数区域还是6个,等于结构所占格数。
到现在为止,我们终于把候选数种类和候选数区域的区别讲出来了。通过观察发现,这两个4的区域相交于红框内(本例中是r9c5的4)。这是自噬产生的基础。
刚才那段讲的有些云里雾里。我们现在来具体看看r9c5填4会发生什么:
(1)如果这个4当成紫色来对待,那么r8c5就是橙色(12);由于现在填入了这个4,r7c46也只包含12两种候选数了,从而候选数12在8宫内占3格,违背数独规则。
(2)如果这个4当成橙色来对待,那么r8c5就是紫色(479),等于说479三种候选数在5列内占了4格,同样违背数独规则。
无论从这两个角度的哪一种来考虑,这个4都不该存在。所以r9c5≠4。
看到了吗?这个4本来是SDC结构内的数字,但通过结构的推理却把它删掉了。这就是“自噬”。既然这个4不存在了,那么涂红色的删数也都可以删掉了。
-注:从秩理论的角度讲,SDC是一个零秩结构,因此所有弱区域都是可以产生删数的。而两个弱区域在结构内部的重叠部分(也是结构内的候选数)一旦为真,就会将结构降为负秩,而负秩结构是不可能存在的。-
三、SDC的观察
注:这一部分内容全程重点且高能,必须结合大量练习实例来理解!
我们刚才讨论了4个实例,分别是基本的SDC,外部扩展的SDC,内部区块的SDC,自噬的SDC。这四种实际上都是同一种。在以下方面,合格的SDC结构存在共性,请读者结合以上实例进行验证:
(1)结构涉及的单元格数=候选数区域个数,这也是SDC观察的一个基本点。请注意在自噬SDC中,同一种候选数可能占据多个区域。
(2)SDC“内部”通常是一宫内的某个行/列,不包含已经填入的确定数。在现阶段,SDC通常都会横跨一个宫和一个行/列。
(3)不涉及自噬的候选数不会跨区域存在。
(4)结构涉及的候选数种类数通常≥4。
基于以上特点,我们观察图9-1.5.1的实例,总结一种从内到外观察SDC的角度,当然这通常需要具体问题具体分析:
(1)找到一宫内的一个行/列(n格,n通常是2或3),里面需要有k种候选数,且k至少为4。例如图9-1.5.1,我们找到一个3格5种候选数的区域,此处n=3,k=5。
(2)在SDC“内部”同一行列/宫内找到n1格(n1+n<k),包含这k种候选数的k1个(k1≥2)。如果不得不再引入Δ1种候选数,那就再找Δ1个格子,把这(k1+Δ1)种候选数包含其中。此步骤后,还剩下(k-n-n1)格,以及(k-k1)种候选数。如图9-1.5.2,因为有5种候选数(12679,k=5),我们只找到3格。恰好1行里有一个包含27的格子,所以把它也划入结构。现在还有5-3-1=1格需要找,而还剩下的候选数种类是169,共5-2=3种。
(3)在SDC“内部”同一宫/行列内找(n-n1)格,它必须恰好包含剩余(k-k1)种候选数或者其中的一部分(设为k2种,k2≥2)。如果不得不再引入Δ2种候选数,那就再找Δ2个格子,把这(k2+Δ2)种候选数包含其中。如图9-1.5.3,还有1个格子和3种候选数(169)没找到,但1宫内剩下3格都没有9了,因此退而求其次找一格只包含候选数16的单元格。我们发现,没有直接的16单元格,因此引入一种候选数4,从而需要找两格包含146的格子。现在我们已经找到了完整的结构。经证明,结构涉及格数和候选数区域数都是6,满足SDC的条件,可以产生如下的删数。
是不是很难以理解?限于笔者的语言功力和知识水平,暂时只能用这样的语言来描述。在学习了秩理论,或者进行过大量练习之后,相信你将会有自己的方法和门道。
我们再看一个例子吧,详见图9-1.6.1到图9-1.6.3。
(1)我们找到一个2格的红框,包含15689五种候选数。
(2)在红框所在宫内找1格,包含2789中的至少两个候选数。我们发现那两格都满足要求,这里不妨用那个(19)的格子,将其划入结构。
(3)还剩下1格和568三种候选数。在红框所在行里没有5,因此找1格包含68的格子。寻找后发现没有直接的68,但是有两格(26)和(28),因此引入候选数2,将这两格都划入结构,产生删数。
经过第二个实例的讲解,这个过程是否更清晰了呢?但要真的掌握SDC的观察,还需要大量的实践才可以哦。
四、欠一数组——SDC的另一种视角
欠一数组就是Almost Locked Candidates。它与SDC虽然具有相同的形式,但推理思路是并不相同的。本篇不会重点介绍欠一数组,只是以一个刚才讲过的实例带大家体验一下欠一的角度。
如图9-1.7,这次我们从填数的角度去理解。从r1c6推导到r2c2,我们发现,r1c6填什么,r2c2也得填同样的数,也就是r2c2非2即7。可以删除r2c2的16。
此外,1宫内能填27的地方,只有r2c2和红框,因此红框也必须包含2和7的一种,与r1c6在1行内构成27数组,从而产生删数。
当SDC涉及的格数很多的时候,或许就是欠一视角使用起来比较方便的情形。
小结:
(1)SDC是一种形式上融合,但在逻辑上可以分离为多个数组并且分开使用的候选数结构。其最重要的一条标准,就是涉及单元格数等于候选数区域数。
(2)欠一数组可以视为SDC的另一种观察角度。
练习:请基于下面图片的红框找到对应的可以删数的SDC,并画出所有删数