# 隐性致命结构

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

## 致命结构的矛盾和强区域的关系 <a href="#relations-between-proving-of-deadly-pattern-and-truths" id="relations-between-proving-of-deadly-pattern-and-truths"></a>

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

<figure><img src="https://3269563042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBwg2o9WwhosLFTuqyR3w%2Fuploads%2FN0VQGVuorZg8IEZxYrX0%2Fimage.png?alt=media&#x26;token=a29a8df7-5ab0-4cb3-9d76-d5c58a0e1794" alt="" width="375"><figcaption><p>上一篇内容的例子</p></figcaption></figure>

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

<figure><img src="https://3269563042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBwg2o9WwhosLFTuqyR3w%2Fuploads%2FsJ7hz8zZU9YPQrnFmg9U%2Fimage.png?alt=media&#x26;token=aa651175-03a7-4b2f-9023-85c08c63a9d9" alt="" width="375"><figcaption><p>上面那个例子，原画法</p></figcaption></figure>

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

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

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

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

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

## 显隐性视角在秩理论里的设定 <a href="#rules-of-naked-and-hidden-views-in-rank-theory" id="rules-of-naked-and-hidden-views-in-rank-theory"></a>

什么样子的结构是带显性的，而什么样的结构是带隐性的呢？其实很简单：

* **显性视角：强区域全是单元格，而弱区域全是行、列、宫；**
* **隐性视角：强区域全是行、列、宫，而弱区域全是单元格。**

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

<figure><img src="https://3269563042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBwg2o9WwhosLFTuqyR3w%2Fuploads%2Fb6DBg8fwu5pltqYS1huk%2Fimage.png?alt=media&#x26;token=aad637de-842e-4769-be6e-34b61e9ce969" alt="" width="375"><figcaption><p>显性三数组，秩理论视角</p></figcaption></figure>

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

<figure><img src="https://3269563042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBwg2o9WwhosLFTuqyR3w%2Fuploads%2FVfBmxS2wl8XdWjJU5bkY%2Fimage.png?alt=media&#x26;token=25b97d51-9e41-4c34-a761-9aeafb3787d3" alt="" width="375"><figcaption><p>隐性三数组，秩理论视角</p></figcaption></figure>

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

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

## 隐性致命结构的基本推理 <a href="#reasoning-of-hidden-deadly-pattern" id="reasoning-of-hidden-deadly-pattern"></a>

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

<figure><img src="https://3269563042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBwg2o9WwhosLFTuqyR3w%2Fuploads%2FjTuhTjWKAoSxaKFFHwNy%2Fimage.png?alt=media&#x26;token=4705ee3b-de14-4611-a18e-0037b3faf031" alt="" width="375"><figcaption><p>隐性致命结构</p></figcaption></figure>

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

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

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

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

## 部分隐性致命结构 <a href="#partial-hidden-deadly-pattern" id="partial-hidden-deadly-pattern"></a>

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

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

### 例子 1：拿致命结构构造链 <a href="#example-1" id="example-1"></a>

<figure><img src="https://3269563042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBwg2o9WwhosLFTuqyR3w%2Fuploads%2FWJ1hReR3MDqbAAkQQQnS%2Fimage.png?alt=media&#x26;token=b07e157f-8c4d-4a73-a65c-2b4251f2d614" alt="" width="375"><figcaption><p>部分隐性致命结构</p></figcaption></figure>

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

它怎么致命的呢？这里我们要用下传递。首先，我们先看 `b8`。`b8` 里数字 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 个单元格 `r3c56` 和 `r4c456` 里的 2 和 4 的排列即可。简单列举一下情况：

* 2 和 4 放 `r79c4` 里——`r34c56` 构成 2 和 4 的唯一矩形导致矛盾；
* 2 和 4 放 `r79c5` 里——`r3c5` 无法正常填数（这个格子就两个候选数 2 和 4），矛盾；
* 2 和 7 放 `r79c4` 里——因为 4 和 7 只能斜放，所以 4 必然在 2 边上，即 2 和 4 就只能横放。此时结合 `r3c56` 和 `r4c456` 就可以得到 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：超级复杂的致命结构 <a href="#example-2" id="example-2"></a>

我们再来看一个例子。

<figure><img src="https://3269563042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBwg2o9WwhosLFTuqyR3w%2Fuploads%2Fqk66gYlipmNtHrkYJ9CJ%2Fimage.png?alt=media&#x26;token=81cc5838-7b3e-46aa-9f1e-f00b76c7f4d1" alt="" width="375"><figcaption><p>部分隐性致命结构，另一个例子</p></figcaption></figure>

如图所示。这个题的致命结构非常复杂。此题需要针对 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 在 `r56c6` 里填一个，7 和 8 又会受到 `b4` 斜放的影响，所以合理的填法就只有 5 和 6 斜放了。

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

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

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

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