github编辑

隐性致命结构

Hidden Deadly Pattern

前面的内容里我们提到了致命结构的矛盾论证,在秩理论里是需要按强区域严格划分的。下面我们继续深入探讨这一点。

致命结构的矛盾和强区域的关系

上一篇内容里,我们提到了致命结构带有 9 个强区域,却只有 4 个弱区域的例子。

上一篇内容的例子

如图所示。在此例子里,我们删掉的是 r1c2(9),利用的是两头 9 得到的删数。我们知道,它嵌入链里的时候,可以使用虚拟强区域的方式直接将 r4c1(5)r6c9(4) 搭起来。但是,我们也提供了原始的画法:

上面那个例子,原画法

如图所示。可以从图里看出,我们将唯一环的 6 个单元格全都标了单元格强区域,但是没有标任何的弱区域,这个结构似乎就可以得到删数了。这是咋来的呢?

我们直接说过,秩理论的底层其实也是简易的排列组合,将合理的填法找出,并取出所有填法下都能得到的为真或为假的数字,作为结构的结论。

但是,强区域只要是非虚拟的,那么它必然不可能允许数字往里填两个及以上的情况——这显然不可能。所以我们会自然认为,有没有它似乎也无所谓,因为他们客观成立。但从枚举的角度来说,它会作为对此区域的数字的范围划分进行约束。如果不指定的话,它客观存在不假,但枚举会迷失方向(我不知道要枚举哪些位置)。

所以,我们需要有如此的指定。这是 XSudo 对秩理论的“公式化”处理设定:指定结构范围 → 确定排列情况 → 找结论。

知道这一点之后,我们不难知道,它为什么需要这些位置了:因为它是唯一环的排列范围,所以得有他们。

显隐性视角在秩理论里的设定

什么样子的结构是带显性的,而什么样的结构是带隐性的呢?其实很简单:

  • 显性视角:强区域全是单元格,而弱区域全是行、列、宫;

  • 隐性视角:强区域全是行、列、宫,而弱区域全是单元格。

如果你不能理解如此的设定,你可以将显隐性数组用秩理论来重新描述一下,你就懂了。

显性三数组,秩理论视角

如图所示。显然这是显性三数组。可以看到,秩理论里,显性三数组的强区域设定为 5n268 三个单元格上。

隐性三数组,秩理论视角

如图所示。可以看到,隐性三数组刚好就是把强区域表示为 567r5

是不是很简单?不难按此定义,我们可以得到众多结构的显隐性划分:鱼是隐性的,伪数组是显性的,烟花数组是隐性的,多米诺环是显性的,等等。

隐性致命结构的基本推理

有了这样的定义后,我们就可以看看,隐性致命结构是什么东西。

隐性致命结构

如图所示。请注意 89r359 这 6 行。除了 r9 里可以多填一个 9 在 r9c3 外(或者图中也标了 b9 也是如此),8 和 9 都必须填在 r359c789 这 9 个单元格里。

这 9 个单元格里,虽然 8 和 9 可以任意排列,但不难知道,怎么填都会形成致命结构,要么是唯一矩形,要么是唯一环,不存在其他情况。所以,这个结构很容易得到它是致命的。

所以,唯一的出路是让 9 填在能避免出现矛盾的点位上。哪里呢?r9c3 或是 r7c8 了。所以,r7c8 = 9r9c3 = 9 是这个题的结论。这两个结论都可以得到。

我们就把这种结构称为隐性致命结构(Hidden Deadly Pattern),即带有隐性视角的(也就是强区域用的是行列宫强区域而非单元格的)致命结构。

部分隐性致命结构

有些时候,要达成全套隐性或显性是非常“看运气”的,毕竟这样的结构得看题目有构成这样的结构的机会。所以我们时不时会找一些显性和隐性搭配的致命结构。

下面我们来看一个显隐性搭配的情况。

例子 1:拿致命结构构造链

部分隐性致命结构

如图所示。这个题如果只看黑色的候选数,那么他们是一个致命结构(包括 r4c56(2) 这俩自噬删数也在内)。

它怎么致命的呢?这里我们要用下传递。首先,我们先看 b8b8 里数字 3 只有 r9c45 可填,于是我们不难发现,4 和 7 在结构的 r79c45 的其中三个单元格里来回变动。换言之,这四个单元格因为只有三处单元格填 2、4、7,所以最终 4 和 7 的摆放位置只有三种:

  • 4 和 7 横放——矛盾,因为 r79c1 没办法填数;

  • 4 和 7 竖放——矛盾,因为会配合 r79c1 形成唯一矩形;

  • 4 和 7 斜放——看起来可以?

似乎斜放可以。但是斜放真的可以吗?其实也是不行的。为什么呢?看到这个 2 了吗?为什么 r7c45(2) 也被涂黑了呢?因为它会作为致命结构的一部分参与传递。不过,这里用传递说起来会非常晦涩,这里我们还是用稍微通俗的方式来解释它。

因为 2 也会参与结构的一部分,所以对于 b8 而言,其实是 2、4、7 三种数字在参与排列。因为我们已经知晓 4 和 7 只能斜着放,所以 2 必然会和 4 或者 7 的其中一个数同处于一个列上。这个“同列”指的是,对于 r79c4 这两个格子同列,或者是 r79c5 这两个格子同列,这两组单元格里,其中必然有一个是要么构成 2、4 数对,要么构成 2、7 数对,这个意思。

要论证排列均是矛盾的,我们只需要结合上面余下的 5 个单元格 r3c56r4c456 里的 2 和 4 的排列即可。简单列举一下情况:

  • 2 和 4 放 r79c4 里——r34c56 构成 2 和 4 的唯一矩形导致矛盾;

  • 2 和 4 放 r79c5 里——r3c5 无法正常填数(这个格子就两个候选数 2 和 4),矛盾;

  • 2 和 7 放 r79c4 里——因为 4 和 7 只能斜放,所以 4 必然在 2 边上,即 2 和 4 就只能横放。此时结合 r3c56r4c456 就可以得到 2 和 4 怎么排列都会要么唯一矩形要么唯一环,导致矛盾;

  • 2 和 7 放 r79c5 里——因为 4 和 7 只能斜放,所以 4 必然在 2 边上,即 2 和 4 就只能横放。和放 r79c4 形成的效果趋同,所以最终也可得到矛盾。

所以,这一大坨黑色的候选数集合会构成一个致命结构。然后,我们利用这个致命结构可以构造一条强链关系:2r4c1 == 1r7c4。然后,删数 r7c7 <> 1 就可以通过链得到删数。

那么,r4c56(2) 是怎么删的呢?这里可以用下毛刺的思路。我们把 r7c4(1) 视为毛刺讨论两边的情况。

  • 如果 r7c4(1) 为真,则根据 r7c45(2) 共轭对(或者强链关系,无所谓了)可得 r7c5 = 2;然后由于 r3c56 是数对,所以 r3c6 = 2。所以此时 r4c56 <> 2 成立;

  • 如果 r7c4(1) 为假,则根据刚才构造的强链可得 r4c1(2) 为真,所以此时也有 r4c56 <> 2 成立。

我们把有隐性的特征,但不是完美的隐性致命结构的致命结构称为部分隐性致命结构(Partial Hidden Deadly Pattern)。当然,你也可以叫它“部分显性致命结构”。不过因为显性致命结构是我们通过“先入为主”先学到的,所以一般不在致命结构为显性的时候强调它是显性的致命结构,因此这个说法几乎不用。

例子 2:超级复杂的致命结构

我们再来看一个例子。

部分隐性致命结构,另一个例子

如图所示。这个题的致命结构非常复杂。此题需要针对 5、6 一对和 7、8 一对分成两组数字来分析。

不难发现,b147 这里非常混乱,不过好在 b7 的 5 和 6 只能横着放,所以讨论的情况会少一些。因为 b7 里 5 和 6 只能横着放,它限制了 5 和 6 同时摆一排的情况,所以 5 和 6 只能在 b7 里竖放或斜放。

先看竖放的。如果竖放的话,那么 7 和 8 在 b7 里也只能竖放。所以影响到 b14 之后,b14 里的 5 和 6 以及 7 和 8 也均只能竖放。对于 b1 而言,因为 5 和 6 竖放,所以配合 b2 可以传递出一个横放的 5 和 6 的数对(可以把它放在 b7)。同理,b4 因为是竖放的,所以可以配合 b6 传递出一个竖放的 1 和 7 的数对(可以把它放在 b4)。然后,你就会发现这个余下的部分是一个四数探长致命结构,所以矛盾了。

那么就只剩下斜放了。对于 b7 而言,斜放 5 和 6 和斜放 7 和 8 随便讨论哪个都行,而且怎么斜着放都行,因为这里 7 和 8 是当成一起来看的。所以,我们只需要讨论一个情况就行。

比如我们把 r7c2 放上 5,把 r9c3 放上 6(或者换过来,无所谓)。因为它是斜放的,所以它会带着 b1 里的 5 和 6 也斜放。要稍微注意的是,本身 b1 里的 5 和 6 还可以横着放的,但横放 5 和 6 会造成 b2 里的两个单元格的其一无法填数,所以只能斜放。虽然结果上只能斜放,但别漏掉这个情况忘了讨论了。

这样斜放之后,因为 b2 格子本身就是斜着摆的,所以最终 b5 里 5 和 6 只能斜放,为什么呢?因为我们这个时候要看 7 和 8 了。7 和 8 在 b7 里因为 5 和 6 只能斜放的关系,它俩现在也只能斜放。那么映射到 b4 里,7 和 8 的位置也具备横放和斜放两种情况。但很显然,横放会造成 r5 里余下三个单元格 r5c568 无法填数,或者是 r6 里的余下三个单元格 r6c568 无法填数(因为 7 和 8 都被用掉了,余下的数只有两种,填三个格子是填不满的),所以 b4 里的 7 和 8 也只能斜放。于是,7 和 8 在 r56c568 这 6 个单元格里根本不存在横放和竖放的情况。因为你要在 b5 里放 1、5、6、7 四种数字,其中 1 在 r56c8 里填一个,7 和 8 又会受到 b4 斜放的影响,所以合理的填法就只有 5 和 6 斜放了。

也就是说,在这种情况下,一旦 5 和 6 在 b7 被固定斜放的情况后,b12 里的 5 和 6,以及 b5 的 1、5、6、7 数组和 b6 的 1、8 数对都会被固定下来。此时,能活动的只有 b4b7 的 7 和 8 了。其中,b4 因为是隐性视角,所以是位置活动;而 b7 里余下两个单元格必然斜放,所以是显性视角(单元格内 7 和 8 数字交换)。

很显然,变换 b4b7 的此时的部分是不影响盘面余下空格的,所以就算大部分数字都固定,这几个数不相同也会造成两种不同的填法,而且不影响行列宫的任意一处位置,所以它仍然是可以造成矛盾的。需要提一嘴的是,这里一旦固定了之后(比如最开始说的 r7c2 填 5,r9c3 填 6),我们会发现 b4 里 8 只能横着换位置,7 也只能横着换位置,不存在竖着变的情况了,因为此时 b7 余下两个摆 7 和 8 的位置是显性状态,你一旦让 b4 竖着放了 b7 会填不了数字造成直接矛盾。

所以,这个结构通过简单的传递过程,搭配穷举的思路,是可以得到它是致命的。所以,本题的结论是 r6c8 <> 18

至此,我们就把隐性致命结构和部分隐性致命结构讲完了。

最后更新于