> For the complete documentation index, see [llms.txt](https://sudoku.kazusa.tech/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sudoku.kazusa.tech/rank-theory/08-rank-of-link-and-elimination.md).

# 弱区域和删数的秩

秩理论我们已经接触了一部分的内容了，我们也带着大家分析了基础的推理方式，精确覆盖之后秩的计算，以及删数的分析等等内容。

本篇章将继续带着大家学习秩理论，不过这个篇章里的秩理论的分析都比较复杂，所以我单独将其拆出来作为了一个单独的篇目。希望你在前面的知识点已经比较熟悉之后再来学习此篇目的相关内容。

## 弱区域和删数的秩的定义 <a href="#definition-of-rank-of-link-and-elimination" id="definition-of-rank-of-link-and-elimination"></a>

在平时找结构的时候，我们可能会使用秩对结构进行简单的分析，当然，也可能用不上，因为结构可能没有复杂到需要秩理论的帮助。

不过，为了更清楚地阐述今天要讲的内容，我们拿一个简单的例子给各位介绍一下。

<figure><img src="/files/oKWw4gsnN44DrdfFsTwd" alt="" width="375"><figcaption><p>双线风筝（骨架）</p></figcaption></figure>

如图所示。这是一个双线风筝技巧的结构框架。它删除的是 `r6c6(5)`。

这个视图还眼熟吧？之前用到的 XSudo 软件的风格。可以看到，这个例子里，数字 5 的所有填法一共有 3 种情况。

<figure><img src="/files/DLD4BMQ84SMl1HSwZ35c" alt=""><figcaption><p>双线风筝的三种填 5 的情况</p></figcaption></figure>

如图所示。显然我不是打算教各位怎么去穷举全部的摆放情况的，这里只是一个演示。其中黄色方块代表了这个地方填入 5（这个候选数 5 此时为真）的情况。

可以看到，这个结构的删数在 `r6c6` 这个单元格上，它引出了两个弱区域，一个连接到了 `r2c6(5)`，而另一个连接到了 `r6c2(5)`。整个结构一共有三个弱区域两个强区域，所有候选数（不含删数）均为精确覆盖，所以可得整个结构的秩为 3 - 2 = 1。

这是我们之前学到的分析结构的秩的方式。这都没什么问题。

下面我们细化秩的分析，从结构细化到弱区域和删数上。强区域就不用了，因为强区域的定义是必须在里面拿出一个候选数为真，所以它内部候选数的真假性无需单独列出来分析（怎么说都有 1 个）。

先说弱区域。这个题有 3 个弱区域：`5b1`、`5r6` 和 `5c6`。仔细观察三种不同的填数情况，可以发现，对于 `5b1` 而言，情况 1 和 2 都会用到两端的其中一端，但第三种情况，5 是不用落在 `5b1` 这个弱区域的，此时 `5b1` 两个 5 全为假。同理，`5r6` 和 `5c6` 里，分别也都是最多出现一次，但最少可以一次都不出现。

如果我们将秩的定义覆盖到弱区域的话，我们这么定义它：

**弱区域的秩等于这个弱区域在所有填数情况下，最多此弱区域里为真的候选数数量，减去最少此弱区域里为真的候选数数量。**

按此定义的话，三个弱区域因为最多都是 1 个，最少都是 0 个，所以，这三个弱区域的秩都等于 1。

然后是删数。我们定义删数的秩是这样的：

**删数的秩等于这个删数引出的所有弱区域里，最多有几个弱区域有为真的候选数，减去最少有几个弱区域有为真的候选数。**

按此定义的话，对于此题唯一一个删数 `r6c6(5)` 而言，它引出了两个弱区域。最多的时候是情况 3，两个弱区域都有为真的候选数；而最少的就是情况 1 和 2 了，它只有一个弱区域有为真的候选数。所以按减法计算，这个删数的秩等于 2 - 1 = 1。

因为弱区域在之前最开始的秩理论学习里就定义为“最多只能出现一次为真的候选数”，所以删数的秩计算次数的时候，也可以定义为“所有弱区域里有多少个为真的候选数，数量最多的时候减去数量最少的时候”，是一样的。

另外，可以从这种定义看出，不论是弱区域的秩还是删数的秩，都不可能出现负数，因为最多的次数肯定不可能比最少的次数还要少；但是它可能大于 0。

## 零秩弱区域和零秩删数 <a href="#rank-0-link-and-rank-0-elimination" id="rank-0-link-and-rank-0-elimination"></a>

那么，这么定义的话，什么时候弱区域是零秩的呢？删数什么时候可以是零秩的呢？

首先，环结构显然是符合条件的。我们拿一个最简单的示意图介绍一下。

<figure><img src="/files/2KWjXpPoty3GPCwQlYok" alt="" width="375"><figcaption><p>二阶鱼的零秩删数和零秩弱区域</p></figcaption></figure>

如图所示。这是一个二阶鱼结构，它的删数是 `r456c37 <> 5`。这是显然的。

对于这两个区域，我们可以明显知道，这个结构整体就只有两种填法：

* `r3c3 = 5`、`r7c7 = 5`；
* `r3c7 = 5`、`r7c3 = 5`。

对于弱区域 `5c3` 而言，第一种情况会有此弱区域为真的候选数位于 `r3c3(5)`；而第二种情况也有，位于 `r7c3(5)`。所以，结构所有的情况下，最多最少都是 1 次为真，所以这个弱区域的秩等于 1 - 1 = 0；同理，`5c7` 也是如此。这两个区域此时就被我们称为**零秩弱区域**（Rank-0 Link）。一般意义上，因为秩的计算一般跟强区域无关（之前已经说过，强区域内部必须填一次，所以这种定义对它而言没有什么意义），所以零秩弱区域也可以简称为**零秩区域**。

另外，因为零秩区域往往会引发一系列的删数，所以对于删数而言，每一个删数都一般只处于一个弱区域下（反过来说就是，一个删数只会引出一个弱区域）。因为弱区域是零秩的，所以根据删数的秩的定义，这些删数自然也是零秩的。

## 零秩删数的例子 <a href="#a-rank-0-elimination-example" id="a-rank-0-elimination-example"></a>

下面我们来看零秩删数的例子。

### 例子 1：复杂结构里的强三元组 <a href="#example-1" id="example-1"></a>

<figure><img src="/files/ocuovEhaONOv30GddUzp" alt="" width="375"><figcaption><p>一个零秩删数的例子</p></figcaption></figure>

如图所示。这个例子里，删数 `r1c4(2)` 处于弱区域 `2c4` 上。整个结构有一个强三元组 `r3c4(2)`，别的位置均为精确覆盖。因为有强三元组的关系，所以我们需要单独拆开分析：

* 当 `r3c4(2)` 占位时，`2c4` 一定有为真的情况，此时弱区域 `2c4` 是零秩的；
* 当 `r3c4(2)` 不占位时，所有候选数均为精确覆盖。因为强弱区域此时都有 5 个，所以结构的秩等于 5 - 5 = 0，结构是零秩的，所以所有弱区域均可用于删数，反映到 `2c4` 上就是，数字 2 要么填在 `r3c4` 上要么填在 `r9c4` 上，不存在该弱区域不出现 2 为真的情况，因此 `2c4` 仍然是零秩的。

所以，即使在结构存在强三元组的时候，我们都可以得到 `2c4` 是零秩弱区域，因此删数 `r1c4(2)` 的成立得到了保障。

### 例子 2：复杂鱼里的强三元组 <a href="#example-2" id="example-2"></a>

<figure><img src="/files/IWXSHWHD8RjlcikRwJ7W" alt="" width="375"><figcaption><p>复杂鱼，有强三元组</p></figcaption></figure>

如图所示。本题是之前介绍过的例子。不过这次我们会带着各位看下弱区域的秩和删数的秩。

首先结构是有一个强三元组 `r4c5(1)` 的。所以我们要讨论它的占位情况。

* 如果 `r4c5(1)` 占位，则弱区域 `1r4` 为零秩的；
* 如果 `r4c5(1)` 不占位，则所有候选数 1 都是精确覆盖。按强弱区域数求差可得秩为 0，所以每个弱区域均可用于删数。对于 `1r4` 而言，此时它也是零秩的。

本题还存在一个不能删数的零秩弱区域 `1r2`。这个弱区域在结构里暂时没有派上用场，因为 `r2` 已经没有别的地方有 1 了。整个结构一共有 4 种不同的填 1 的摆放模式，将他们全部罗列出来可以看到，`r2` 始终有 1 的出现在结构内：

<figure><img src="/files/S65ZYtTT0bpfXKfkbtMA" alt=""><figcaption><p>四种不同的填法</p></figcaption></figure>

如图所示。因此，`1r2` 也是零秩的。这里的零秩并非是因为 `r2` 确实只有两处 1 摆放造成的。倘若 `r2c6` 包含候选数 1 的话，`1r2` 仍然是零秩弱区域，而 `r2c6(1)` 也会因为处于零秩弱区域上而可以被删掉，成为零秩删数。它在这个图里不存在是因为被别的技巧提前删掉了（多宝鱼）。

所以，之前我们学到的秩理论里的强弱三元组，并不是说删数一定要跟强弱三元组本身有关系。比如这个例子里 `r2c6(1)` 假设它存在的话，就跟强三元组 `r4c5(1)` 无关。

### 例子 3：复杂鱼里的弱三元组 <a href="#example-3" id="example-3"></a>

<figure><img src="/files/TvZAjFr1fqwhOvCNEjnV" alt="" width="375"><figcaption><p>例子 3</p></figcaption></figure>

如图所示。这个题有 3 个强区域和 4 个弱区域，还有一个弱三元组 `r2c7(7)`。

如果 `r2c7(7)` 占位，两个弱区域 `7b3` 和 `7c7` 和一个强区域 `7r2` 将会不复存在。因为剩下的结构里候选数均为精确覆盖，所以只看余下的部分的话，强弱区域数量都还有 2 个，于是结构的秩为 0；此时所有弱区域均可删数。

但是如果 `r2c7(7)` 不占位，则所有候选数均为精确覆盖。但是这样推算后我们发现秩为 1  而不是 0，不穷举全部填法就无法有合理的结论，秩为正数的时候只能认为它可能跟链结构的删数那般，还得去找删数位置，所以不能直接删数，所以只能退而求其次。不过这个题好在我们发现 `r2c27` 在同一个强区域下。当 `r2c7(7)` 不占位的时候，`r2c2` 直接会接替位置，于是 `r2c2` 此时是 `7r2` 成立的填数位置。

也就是说，两种占位最终得到的结论是，要么结构零秩，要么 `r2c2(7)` 为真。所以，`7c2` 是零秩弱区域。因此，`7c2` 可以用于删数，所以这个题的结论是 `r8c2 <> 7`。

### 例子 4：复杂鱼里的弱三元组 <a href="#example-4" id="example-4"></a>

我们再来看一个例子，跟这个例子的推演方式完全一样，所以就自己看了。

<figure><img src="/files/3TLpTA7iOI3dmRSCcNEU" alt="" width="375"><figcaption><p>例子 4</p></figcaption></figure>

如图所示。

### 例子 5：待定数组里的弱三元组

这个例子和前面的推演也差不多，也自己看。

<figure><img src="/files/iTxVX6oc2zYOg8nUt3sE" alt="" width="375"><figcaption><p>例子 5</p></figcaption></figure>

如图所示。这个题也是一样的。

## 半环和全环的本质 <a href="#essence-of-nice-and-nonnice-loop" id="essence-of-nice-and-nonnice-loop"></a>

在之前[动态环的删数分析](/chain-theory/11-dynamic-chain/03-elimination-analysis-on-dynamic-loop.md)里，我们介绍过[动态环的删数分析](/chain-theory/11-dynamic-chain/03-elimination-analysis-on-dynamic-loop.md#nice-loop-and-non-nice-loop)的定义。不过，从秩理论里我们学到了删数的秩和弱区域的秩的定义方式，此时半环和全环的定义就会有一个更加合理的说法。

**如果一个结构的强弱区域数量一样多时，结构都被称为环。其中，当所有弱区域均为零秩弱区域时称为全环，不是所有弱区域都是零秩弱区域时称为半环。**

可以从这个定义看出，环是被广义化处理过的。因为动态环和普通环也有不同，这牵扯到很复杂的内容，例如是否带有三元组（候选数是否都是精确覆盖）之类的。但这个定义下就直接以一个方式定义出来了。实际上我们也没有必要严格对此进行区分，因为在秩理论里，他们在删数规则和推演方式上没有什么区别。

<figure><img src="/files/Zx0aibiBVGaNbBdzOoVn" alt="" width="375"><figcaption><p>绽放环是全环</p></figcaption></figure>

如图所示。绽放环就是典型的全环。所有的弱区域均为零秩的；另外，`r2c6(3)` 是自噬删数，它同时处于两个弱区域和一个强区域里，是弱三元组；因为它占位会直接造成结构秩变为负数，所以根本不存在为真的情况，所以直接可以被删掉。

这种定义会推广到很多场景。甚至是，融合待定数组。

<figure><img src="/files/f342YyBx6JadoZKDwsNN" alt="" width="375"><figcaption><p>融合待定数组也是全环</p></figcaption></figure>

如图所示。融合待定数组也是全环，因为强弱区域数是一样的：强区域全是单元格，一共 5 个；弱区域则是 2、5、6、8、9 所在的列和宫，也是 5 个。而且显然没有强弱三元组，均为精确覆盖。

复杂一些的普通结构也可以是环。下面给各位看一个之前介绍过的半环的例子。

<figure><img src="/files/MwPZW9u31yzBlXCI5lTZ" alt="" width="375"><figcaption><p>复杂半环结构</p></figcaption></figure>

如图所示。这是一个半环，强弱区域数是相同的，但是只有一个弱区域 `4n8` 是零秩弱区域，所以只能叫半环。顺带一提，这个题之前解释的时候就已经非常复杂了，它有 4 个强三元组，具体请回到[强三元组的例子](/rank-theory/03-triplet/02-examples-using-truth-triplet.md#example-3)查看它的详细推理思路。
