欠一数组(ALC)
Almost Locked Candidates
最后更新于
Almost Locked Candidates
最后更新于
下面我们将进入新的技巧的学习。前面我们一连学习了五种不同的致命结构技巧(利用唯一解的技巧),我们休息休息,将推理逻辑回归到普通的矛盾上去。
如图所示。请注意图中 r7
和 b8
两个区域。
我们发现,在 r7
里,数字 1 和 6 整体只能填入到 r7c345
三个单元格里;而其中的 r7c45
均位于 b8
里。那么我们不妨作出这样的假设。我们发现,r9c6
这个单元格只要填入了一个数,不论是哪个数,因为都是 1 或 6 的关系,那么 r7c45
都无法填入这个数字。而因为 r7
上必须填入一个 1 和一个 6,所以 r7c345
三个单元格的其中两个单元格都需要被 1 或 6 所占据。
而且,由于 r7c45
里 1 或 6 的其中有一个数会填不进去的关系,那么我们只能知道的是,r7c3
必须承担起填入 1 或 6 的责任,以确保 r7c45
只用再填一个数,结构就可以“稳定”下来了。所以,r7c3
必须是 1 或 6 的其一。那么结论就是 r7c3 <> 29
……吗?
别急。别着急下结论。刚才我们说到,r7c3
必须是一个 1 或 6 的其中一个数(假设我用字母 来表示),而 r7c45
只能拿出其中一个单元格填一个数(假设用字母 来表示),这是不是很像是之前比如说唯一矩形类型 3 里的那种摆放状态?
因为 和 此时均是 1 或 6 里的数(而且 ),所以,按道理来说,r7
的 r7c345
会有其中两个单元格形成关于 1 和 6 的隐性数对;而借用这一点,将视角回溯到 r9c6
,我们还能发现神奇的现象。因为 r7c45
只能填一个 ,所以 r9c6
只有 1 或 6 的话,那岂不是它只能填 ?是的,我们甚至还可以更进一步地得到,r7c3 = r9c6
这个填数关系。当然,这个填数关系似乎没有什么好用的结论(最多也就影响你后续填入了其中一个单元格后,立马可以把这个数填在另外一个单元格上)。不过,我们主要想得出的是 r9c6
填 的结论。因为这样一来,b8
也会有一个数对,一个显性数对,用的是 r7c45
和 r9c6
的其中两个单元格。所以,b8
里的其余单元格都不能填入 1 或 6。所以,这个题的结论是 {r8c456, r9c4} <> 16
和 r7c3 <> 29
。
我们把这种用到一个行/列和一个宫的组合,并带有一边显性数组一边隐性数组的这种特殊结构称为欠一数组(Almost Locked Candidates,简称 ALC)。图上这个例子是欠一数组的最低规格的情况,因为是数对,所以叫欠一数对(Almost Locked Pair,简称 ALP)。
这里要稍微注意一下的是,在英文名里,欠一数组这个技巧的英文名用的单词是 Locked Candidates,即区块,而并不是数组,这是因为国外的数独圈子里,他们更倾向于将这个技巧结构看作是区块的延伸(如不看
r7c3
的话,数字 6 就称为了区块,并会影响到r9c6
的填数,比较符合区块的长相和推理过程)。而我们这边的圈子更看重假设成 和 参与讨论的情况,所以更符合数组一些。不过这都不是很重要,搞清楚结构的长相,叫什么都行。
下面我们再来看一个欠一数对的例子,用于巩固,以便你能理解它。
如图所示。这个例子就自己看一下了。
下面我们来看三数组的情况。
如图所示。这次我们把视角切换到 r6
和 b6
上。
可以看到,b6
里有 r4c8
、r5c7
和 r6c78
一共四个单元格可以填入 1、5、6,其中 r6c78
还位于 r6
上。
和之前假设一样,我们还是从显性这边开始。由于 r6c12
里只能是 1、5、6 的其中两种数字,所以我们不妨假设他们为 和 ,那么为了确保 b6
能够正常摆放下 1、5、6 三种数字,我们只能让 r6c78
的其中一个单元格填入 (此时 均是 1、5、6 里的数,且互相都不相等)。
于是,由于 r6c78
只有一个单元格填 1、5、6 的其中一个数,所以 r6c1278
的其中三个单元格将会构成显性三数组,而 r4c8
、r5c7
和 r6c78
的其中三个单元格将构成隐性三数组。这里要稍微注意一下,由于我们无法确定 r6c78
的其中哪一个单元格是 1、5、6,所以删数结论并不会在这两个单元格里产生,毕竟这并不确定。
所以,这个题的结论就是 r4c8 <> 3
、r5c7 <> 4
和 r6c46 <> 56
。其实按理说 r6c46(1)
也能删,但是这候选数不存在是因为这个盘面状态之前,已经有 1 的区块(r4
)把它给干掉了。
我们把这个带三数组的状态,称为欠一三数组(Almost Locked Triple,简称 ALT)。
下面我们还是老规矩,再看一个例子。
如图所示。这个题也自己看。要注意的是,这个题长得比较简单,但是并不影响推理。
前面的例子,我们都能比较容易地理解。下面我们来看,借用假设字母时使用明数的类型。所谓明数(Value),其实就是提示数和填入数的统称,即这个单元格此时不是空格的状态,但它具体是初始就有的提示数信息,还是自己填的并不重要;明数早期也叫确定值,即当前确定的数值。
可以从名字看出,有明就有暗。所谓暗数,肯定指的就是候选数了。是的,暗数就是候选数的别名。不过这里我们就不改了,毕竟候选数用的次数也比较多了。
如图所示。我们发现,c4
里,r3c4
只有候选数 7 和 8。如果它填了一个数进去,那么此时 7 或 8 就不能填在 r78c4
之中,于是这个数就会落到 b8
里的 r78c6
之中。
不过和刚才的例子有所不同的地方是,这次我们再也无法确定 7 和 8 的具体填数位置,因为此时 b8
里能填 7 和 8 的地方一共有四个单元格而不是原始欠一数对那样只有三个单元格。
这有些麻烦了。但是我们仔细再观察一下,似乎数字 1 也可以纳入到欠一数组的结构里来。如果纳入进来的话,相当于就是说 r78c46
四个单元格其中必须填 1、7、8 三种数字。这就合适了:因为刚开始我们有 r78c4
只能有一处填 7 或 8,而 1 纳入后,1 会占用这四个单元格的其中一个名额,r78c4
占一个名额,剩下呢?剩下就是 r78c6
里不填 1 的另外那一个单元格,这样就刚好能放下三个数字 1、7、8。
很好。这样我们就保证了 1、7、8 都放得下了。所以结论呢?由于我们先填了一个数在 r3c4
里,所以先假设它是填的 。然后,我们可以得到 r78c4
里必须有一个 。然后,r78c6
里必须是一个 和一个数字 1。所以,结论就是,r2c4 <> 78
和 r78c6 <> 234
。
这里我们借用了数字 1 必须填在 r78c46
里。但实际上我们看得到的是,r78c46
里其实就只有 r78c6
右边这两个单元格可以填 1。显然,由于 c4
早就已经有 1 的明数出现,所以压根也放不了 1,所以我们只能把这个 1 视为共轭对一般的存在,相当于给结构打了个补丁,以便支持推广的形式。这是一般的理解方式。
不过,你也可以这么去理解它:哪怕 r4c1
的这个明数 1 它是以候选数形式存在的,这个欠一数组结构仍然是成立的。比如说,r4c1
此时不再是明数 1,而 c4
还存在一个单元格只有候选数 1、7、8。然后我们为了让这个 1 不能直接通过排除出数而破坏掉结构,我们再给 r3c4
补上候选数 1。此时,这个结构就会变为一般的欠一三数组。结构的结论仍然是成立的,甚至删数大多都不会变(当然,1 可能会新增删数)。所以,这个例子实际上就可以被视为是欠一三数组,但是数字 1 处于确定在某一个固定的格子里的特殊状态。所以这种类型也称为明数类型。
可以看出,明数类型在删去固定的这个明数后,实际上用的数字本身就只有 7 和 8 两种数,它已经是最小规格的情况。因此,明数类型等价于标准版本的欠一数组来看,起步就是三数组。
下面我们再来看一个例子。
如图所示。这个例子和前面那个完全一样,所以就留给你自己看了。
由于明数的特殊性,所以欠一数组具有四数组的状态。
如图所示。和前面一样。我们先看成欠一三数组的状态。可以发现,c7
里,单元格 r12c7
只有候选数 2、3、7。所以,这两个单元格最终只能填入数字 2、3、7 的其中两个。于是,这两个数字都不能出现在 r89c7
之中。而由于我们还需要确保 b9
里数字 2、3、7 填入正常,而 r89c7
此时最多只能填一个 2、3、7 的数字进去(还不能和 r12c7
填的一样)。所以,r7c89
和 r8c8
里必须安插两个位置填上跟 r12c7
一样的数字。
而我们还发现,数字 5 在 b9
里只能填在 r7c89
和 r8c8
里,所以里面还得有一个单元格被 5 填入。所以整体来看,能摆成功的唯一状态是这样的:r12c7
填入的数字是 和 ,然后 r89c7
只能填一个 进去(此时 是 2、3、7,且互不相等)。然后,r7c89
和 r8c8
里有一个单元格填 5,剩下俩是 和 。所以,这么看起来,c7
里会有关于 2、3、7 的显性三数组出现,而 b9
里则会出现 2、3、5、7 的隐性四数组(别忘了 5 也在其中)。所以删数结论是 r456c7 <> 37
和 {r7c89, r8c8} <> 19
。
当然,和前面也是一样的。你也可以将 c7
里已经存在的明数 5 视为候选数状态,然后这就好比是一个关于 2、3、5、7 的欠一四数组(Almost Locked Quadruple,简称 ALQ)结构,所以我们把这个称为带明数的欠一四数组。
下面我们再来看一个例子。
如图所示。这个例子更为特殊。它直接用了两个明数。推理方式也是完全类似的,首先假设 c4
里填 3 和 9 的情况,可以得到 r23c4
不能填这个数,于是这个数就会落入 r2c5
和 r3c56
的其中一个单元格里。而我们还发现由于 2 和 5 只能摆在这三个单元格之中,所以一个 2 一个 5 就占用了两个单元格,所以刚好只能再放得下一个位置填和 r5c4
一样的填数。
欠一数组的内容我们就介绍完毕了。