吧务
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
---> 二链列/四角对角线法则 (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. 请找出图中三链列和四链列的位置:三链列:
单元格组________________________________________________;
关于候选数( )。
四链列:
单元格组________________________________________________;
关于候选数( )。



