【标准数独技巧教程】链列阵删减法
数独吧
全部回复
仅看楼主
吧务
level 11
Sunnie😂 楼主
之前我们讲到了数对、三联体和四联体(数组)的占位法和唯余法,但是候选数的技巧完全不止这一点。接下来的技巧一定会让你大开眼界。它比起数组要好玩得多,因为它可以构成一种特殊的形状。
---> 二链列/四角对角线法则 (X-Wing)
盘面 19
如盘面19所示。当填到这里的时候,发现数对已经填不下去了。此时,我们可以观察到,在行A中,只有A2和A6可以填入6;而在行H中,只有在H2和H6可以填6。它们刚好构成一个矩形。可是这有什么用呢?
我们不妨假设一下(请在图上找到对应单元格,并进行推理):
情况1:如果A2填6的话,那么A6和H2将不能填6,那么就只有H6填6了;
情况2:如果A6填6的话,那么A2和H6将不能填6,那么就只有H2填6了。
只有这两种情况了。我们可以看到,情况1的假设是“A2=6”,结论是“H6=6”;而情况2的假设是“A6=6”,结论是“H2=6”。将这两种情况分别放到图上看,我们可以发现,无论是左上角(A2)和右下角(H6)填6,还是右上角(A6)和左下角(H6)填6,都会使得列2和列6出现一个6。所以列2和列6的其余位置,即非这个“矩形”的四个顶点外的其余单元格内,都将不再出现6的身影。因此,C6, G6, I2, I6≠6。
把每一条假设的开头位置和结尾位置连接起来,会发现它组成了X的形状。所以这个解法的英文名由此得来——“X-Wing”。在英语中,wing是翅膀的意思,就像一个展开的翅膀一样。它有一个独特的名称——四角对角线法则。
有意思的是,这种方法还能够拓展到三阶的情况。这也就是为啥它还有一个名字,叫做二阶链列阵了(以下均将“链列阵”简称为“链列”)。
在盘面19的二链列中,我们将产生二链列的单元(图中的行A和行H)叫做定义域(Defining Set),表示二链列被定义的位置;并将需要排除候选数的单元(图中的列2和列6)称为摒除域(Secondary Set),表示用于排除该候选数的位置。这到后面的链列阵的变型中会非常常用。
---> 三链列/剑鱼删减法 (Swordfish)
三阶链列阵比起二链列的情况会多一些,因为它需要更多的假设和推理。例如下面的这个盘面:
盘面 20
如盘面20所示,此时我们观察到,在行C、行F和行H都有且仅有列标为5、6、7的单元格可以填,所以,4在这3行里被控制在那9个单元格内。这时候就假设一下:
情况1:如果C5=4,则F5, H5, C6, C7≠4,解不出,就继续假设:
  A.如果F6=4,则F7, H6≠4,则H7=4;
  B.如果F7=4,则F6, H7≠4,则H6=4;
情况2:如果C6=4,则C5, C7, F6, H6≠4,解不出,就继续假设:
  A.如果F5=4,则F7, H5≠4,则H7=4;
  B.如果F7=4,则F5, H7≠4,则H5=4;
情况3:如果C7=4,则C5, C6, F7, H7≠4,解不出,就继续假设:
  A.如果F5=4,则F6, H5≠4,则H6=4;
  B.如果F6=4,则F5, H6≠4,则H5=4。
此时,我们发现,假设情况均列出了。由于第一次假设并不能完成推理,因此中途又进行了第二次假设,才完成了整个推理过程。对比这6种情况的假设开头以及结尾,可列出下表:
我们发现,无论是哪种情况的假设,始终都会使得列5、列6和列7上至少都有一个4。也因此,列5、列6、列7的其他位置上,候选数4将可以被安全地删掉,亦即图上的A5、A6、B5、B7、D5、D7、G5内的候选数4均将被删除。这就是三链列。注意,此题的三链列的定义域为行C、行F和行H,摒除域为列5、列6和列7。
但是,图中有一个奇怪的地方。图上有一个宫摒除法,是H5=8,由B6、G1和I8的8在宫8内摒除得到的。填入了这个8之后,就会发现一大堆摒除法,还有两个唯一余数法,于是就一口气做到了这里:
盘面 21
如盘面21所示,原来的三链列残缺成了这样(缺了一个“角”),那么它是否还是可用的呢?答案肯定是可以的。这并不影响三链列的用法。假设会比刚才的要少,但是仍能推理,并且把所有假设集合在一起,同样可以使得列5、列6、列7都至少有一个4的出现。此处将不列举其假设,请自行推理。这种也被称为链列缺省(Incomplete)。
但是,应注意的是,最简三链列的阵型应满足“每个定义域和每个摒除域内都需要保证2个单元格”。
---> 四链列/水母删减法 (Jellyfish)
盘面22
其实,四链列和三链列的推理方式大同小异,但是要注意的是,例如盘面22,它的定义域是列2、3、7、8,而摒除域则是行A、B、D、G。此处省略其假设情况,请自行推理(四链列的出现频率是极低的,很难碰到,所以此处并没有重点讲解)。
结论应为:行A、行B、行D、行G中剩余单元格内将删除候选数9。
但是,四链列也同样具有部分单元格缺省的情况,而且相对于盘面23,缺少的更为常见。例如下方的这个四链列结构:
盘面23
此处,四阶链列阵所涉及的单元格仅仅只有8格,但是仍然可以进行推理。不过,它只有两种情况了。
如果A1=8,则I1≠8,则I2=8,则F2≠8,则F5=8,则G5≠8,则G6=8,则A6≠8;反过来也就得到了I1、F2、G5、A6都为8了。但无论是那种情况,列1、列2、列5、列6内都不得在其余单元格内出现8。因此删掉它们。
链列缺省需要满足每个定义域和每个摒除域内都需要保证有2个单元格。这是所有链列都需要满足的情况。
---> 高阶链列(Squirmbag/Starfish, Whale, Leviathan)
高阶链列阵(简称高阶链列)是当阶数大于4后的情况。这样的技巧也同样存在,但是和n>4的数组一样,只存在于理论之上。这是因为它(高阶链列阵)会被与其正交的链列阵完全替换,原链列和可用于替换的链列的阶数和盘面尺寸无关。
根据上述加粗文字可列出下表,从下表中就可了解到高阶链列阵的一些详细情况了:
从上表中,你也能够看出,为什么不存在八链列的说法。
下面的盘面24将展示五链列的其中一个例子。黄色数字1为被删除情况,绿色1为五链列,它也属于缺省的情况。不过,它可以转化成一个关于候选数1的三链列。
盘面24
习题:
1. 在标准的X-Wing(二链列)中,所涉及的单元格数量最少可以是(  )个。
A.1    B.2     C.3    D.4
2. 请找出图中二链列的位置:单元格组_____________________的候选数(  )。
3. 请找出图中三链列和四链列的位置:
三链列:
  单元格组________________________________________________;
  关于候选数(  )。
四链列:
  单元格组________________________________________________;
  关于候选数(  )。
2016年06月29日 02点06分 1
吧务
level 11
Sunnie😂 楼主
上一节答案:
1,C。n值分别为2、3、4、5、6、7。
2,对于(D2、F2)的(数对{79})所使用的占位法可以得到E1=2;
对于(A2、B2、H2、I2)的(四联体{1267})所使用的唯余法可以得到E1=2。
如下面的盘面所示。
3,终盘如下:
2016年06月29日 02点06分 2
@寂寞wu桐 在下一节的技巧之中才会有这一节的答案
2017年02月20日 00点02分
level 1
说了那么多你还是没说明盘19的6到底该填在哪里啊,讲到一半最关键的就没了,三链的也一样[汗]
2020年04月28日 09点04分 7
要答案做什么……这种技巧本来就是用来删东西的,又不是得到什么位置填什么……思维方式得转过来
2020年04月28日 23点04分
@Sunnie😂 我这几天刚玩的,这个矩形也看出来了,可问题是最关键的下一步我不知道该怎么推算,看了好几个回答全都是前半部分的最关键的下一步一直都是缺失的。卡在了最重要的一布[不高兴]
2020年04月29日 06点04分
@Sunnie😂 只要认真玩这个矩形谁都能看出来的,可最重要的推算却办不到[狂汗],只好请教别人了。你会是回答我的那个人吗[太开心]
2020年04月29日 06点04分
@Sunnie😂 老哥,这个矩形到底能不能推算出某个答案呢?如果可以请指教下,我是真心的。如果不行那这矩形岂不是软用没有,能得出结果的规律才有用,得不出来结果的规律毫无意义,这种没有结果的规律是个人都能看出几百万个[不高兴]。那么到底有没有呢给个准好吗
2020年05月02日 07点05分
level 10
[真棒]
2020年04月28日 23点04分 8
吧务
level 13
看了头大…慢慢吸收吧…[乖][乖]
2020年04月29日 20点04分 9
1