# 直观和局标技巧在全标下的样子

为了更好地衔接后续的技巧，我还是想贯彻之前教程的样子，单开一个篇目给各位介绍一下前面全部数独技巧，在全标状态下的样子。

当你在看到这些长相后，你以后就不愁看不懂后续下结论的时候为啥图长那样了；另外，我发这些图也是为了体现一下配色方案的约定俗成。后面所有的技巧，配色方案都会采用这样的方式来给各位展示，就不再变动了。

## 唯一余数 <a href="#naked-single" id="naked-single"></a>

先说唯一余数。

<figure><img src="/files/ZS0kE1QgMvgZw5zBKUAH" alt="" width="375"><figcaption><p>唯一余数用例</p></figcaption></figure>

可以看到，唯一余数的结论是 `r9c1 = 1`。不过如果你忽略掉圆圈的话，其实可以看到的是，这个位置其实就一个候选数。这便是全标状态下最简单的情况。候选数的由来不就是数数么。既然只有一个候选数，那么自然它就是唯一余数了。

之所以全标模式下，把唯一余数放排除之前，有个重要的原因就是，因为它更适合在全标模式下使用。我们大家都知道唯一余数在直观层面都难找得很。但是在全标状态下，它都很容易被发现。所以，当你在做全标题目的时候，就适当调整一下技巧的优先级次序。

## 排除 <a href="#hidden-single" id="hidden-single"></a>

<figure><img src="/files/ANsPIoyNMX30PAfTGd7t" alt="" width="375"><figcaption><p>排除用例</p></figcaption></figure>

如图所示，排除的话会稍微麻烦点。

在全标视角下，虽然你仍然可以使用 `r2c3` 和 `r6c2` 的数字 6 来作排除，但是我不是来说这个的。在全标下，`b7` 里填入 6 的位置只有 `r8c1`。你可以仔细看看 `b7` 里所有空格的候选数排列情况。显然，只有 `r8c1` 有 6 这个候选数，而别的三个格子都没有。所以，不是你填还能是谁填？

## 区块 <a href="#locked-candidates" id="locked-candidates"></a>

<figure><img src="/files/yHnrvfqgQQ6dC8TeLtQZ" alt="" width="375"><figcaption><p>宫区块用例</p></figcaption></figure>

如图所示，直观视角我们可以使用数字 4 来作排除。不过在全标下，我们需要看的是候选数的分布。在 `b1` 里，数字 4 只出现在 `r12c2` 里，这样就有了区块的概念了。

然后根据区块，我们可以得到 `r69c2 <> 4` 的结论。

这个是宫区块，因为区块下在 `b1` 里。下面给各位看一则行列区块的例子。这个例子给各位自己看了吧。

<figure><img src="/files/A1nTMYt6W3ZXUolMmJtE" alt="" width="375"><figcaption><p>行列区块用例</p></figcaption></figure>

## 显性数组 <a href="#naked-subset" id="naked-subset"></a>

下面我们来看显性数组。

<figure><img src="/files/4ElRfKkfSie1zJ3f27Qu" alt="" width="375"><figcaption><p>显性数对用例</p></figcaption></figure>

如图所示，这个题的结论是 `r46c3 <> 69`。当然很明显 `r4c3` 也没有 9，只是这里我们用这个结论把它表达写简单一些。

下面我们来看一下显性三数组和显性四数组。

<figure><img src="/files/pBtkHPZFTBGnw8Djm6td" alt="" width="375"><figcaption><p>显性三数组用例</p></figcaption></figure>

然后我们来看显性四数组。

<figure><img src="/files/6oBYwuCBxdXoBQKIXzCV" alt="" width="375"><figcaption><p>显性四数组用例</p></figcaption></figure>

## 隐性数组 <a href="#hidden-subset" id="hidden-subset"></a>

<figure><img src="/files/sRTIeD6qH3KmxiJUi7v8" alt="" width="375"><figcaption><p>隐性数对用例</p></figcaption></figure>

如图所示，这是个隐性数对。从全标下来说，`b6` 填入 5 和 8 的位置只有 `r56c7` 两个单元格。所以，`r56c7` 不能填入其他任何的数字。

可以看到，它除了这些结论外，还有别的结论。这是因为，在去除掉 `r56c7` 的其他数后，它就只剩 5 和 8 了，会变成一个显性数对。然后，我们又可以得到同列的别处不能填 5 或 8 的结论。

这里是我把这两个逻辑整合在一起了，因为只要出现这种样子的数对，就必然会从隐性数对变为显性数对，然后删掉同列别处的位置（当然，也不一定非得同列，可以同行或同宫）。

下面我们来看隐性三数组和隐性四数组。先是隐性三数组。

<figure><img src="/files/3lXQSJxFR5dRxY7o2NLs" alt="" width="375"><figcaption><p>隐性三数组用例</p></figcaption></figure>

再来看看隐性四数组。

<figure><img src="/files/94EWmOUyCzgWDxjdinkZ" alt="" width="375"><figcaption><p>隐性四数组用例</p></figcaption></figure>

## 数组显隐性互补的性质 <a href="#complementary-property-of-subset" id="complementary-property-of-subset"></a>

### 互补性质解释 <a href="#explanation-of-law-of-complement" id="explanation-of-law-of-complement"></a>

可能你会好奇，为什么之前我在介绍数组的时候，规格只到 4。是不存在 4 以上的情况吗？还是说它过于罕见导致没有题或者不想讲（反正也遇不到）的原因吗？

实际上不是的。在最开始我们就提过一点，数组其实只有一种，只是因为视角不同被分成了两种形态。分成两种形态的原因自然是观察难度的不同，以及逻辑推理的不同。但是从本质上来说，其实它们是一样的东西。

下面我们来看一则例子，以说明这两个最终是等价的。

<figure><img src="/files/qsXntgQGYi9RBv2LuOhj" alt=""><figcaption><p>互补例子 1</p></figcaption></figure>

请看这个题目。这个题目存在一个隐性数对结构（左图），删除的数字是图中红色的 6 个数字；而这图同样的宫内存在一个显性四数组（右图），删除的也是这 6 个数字。

这冥冥之中告诉我们它很有可能不是巧合，就是故意这么安排的。那么，这是题目的设计如此么？我们再来看一个例子。

<figure><img src="/files/iJPYQDPrNxlGMD9XD5KO" alt=""><figcaption><p>互补例子 2</p></figcaption></figure>

如图所示。这是另外一个题目。这个题目左图有一个显性数对，它的结论是这三个删数；右图是在同样的行上存在一个隐性三数组，它的结论仍然是这三个删数。

可能你会有所疑惑。两个数组涉及的数字都不一样，凭什么删数恰好都能完全一样呢？这真的不是巧合吗？

不是的。它不是巧合。它就是数组的一个特征，**显隐性互补**（Law of Complement）：

**如果你发现了一个显性数组，那么这个所在的区域下，同时也存在与之互补的隐性数组，使其删数完全一致。另外，显性数组的规格和隐性数组的规格，应等于整个这个区域下的空格数量。反之亦然。**

怎么理解呢？比如说例子 1，`b4` 里一共有 6 个空格。其中隐性数对是 2 个单元格，显性四数组是 4 个单元格，刚好满足 2 + 4 = 6 的情况；而例子 2 里，`r3` 里一共有 5 个空格。其中显性数对是 2 个单元格，隐性三数组是 3 个单元格，也恰好满足 2 + 3 = 5 的情况。

这个互补特征客观成立的点，在于显隐性数组两方，使用的单元格刚好不同。所谓“刚好不同”，是说显性用的格子，隐性一个都不会用。反之亦然。而整好，显性数组用的格子和隐性用的格子全部列到一起，就是整个这个区域下的所有空格。这是互补的本质原因。

那么，这种互补为什么就奏效了呢？请仔细思考一下。显性数组的删数和隐性数组的删数特征都是什么？显性数组一定删的是数组用到的这些数字，而隐性则刚好相反。举个例子。如果一个显性数对用的数字是 5 和 8，那么它的删数也必须得是 5 和 8。而如果一个隐性数对是 5 和 8 的话，那么它的删数只可能是 5 和 8 外的其他所有数字（1、2、3、4、6、7、9 这些）。从数字上讲，它们删数的“取值范围”是互补的——能够凑成一组完整的 1 - 9。

只要我们保证单元格使用完全用满全部的空格，那么所有的数字由于自身就是互补的删数状态，那么我们就可以使得视角从显性转为隐性，或者隐性转为显性，而删数可以保持纹丝不动。

### 为什么数组规格不超过 4？ <a href="#why-size-of-subset-is-not-greater-than-4" id="why-size-of-subset-is-not-greater-than-4"></a>

下面我们来解释另外一个问题。为什么我们学到的数组，规格只有 2、3、4 三种情况呢？这里我们要稍微用一下数学不等式的思维，不难的，请放心。

首先，我们知道，显性数组和隐性数组的规格总和等于这个区域下所有的空格数，那么我们使用字母 $$c$$ 来表示指定元素的数量的话，那么我们不难得到这个式子：

$$
c\_\text{显性数组}+c\_\text{隐性数组}=c\_\text{空格}
$$

我们将它们移向等号的同一侧，然后使用 $$c\_\text{非空格}=9-c\_\text{空格}$$ 的说法将其代换一下，于是我们就有了：

$$
\begin{align\*}
c\_\text{显性数组} + c\_\text{隐性数组} &= c\_\text{空格}\\
c\_\text{显性数组} + c\_\text{隐性数组} &= 9 - c\_\text{非空格}\\
c\_\text{显性数组} + c\_\text{隐性数组} + c\_\text{非空格} &= 9
\end{align\*}
$$

我们使其这么进行一轮式子变形，就有最下面的这个结果。

我们将这里的数字 9 当成一个定值，而不是一个具体的数。既然是定值，那么我们就知道，左边三个数的和一定是个固定结果。

由于求和等于定值，这意味着左边三个元素，一旦有其中一个数变大，那么剩下两个数的和，结果一定就会变小，才能保证结果是一个定值。

我们不妨为了让 $$c\_\text{显性数组}$$ 和 $$c\_\text{隐性数组}$$ 两个数都尽量大，那么我们只好让 $$c\_\text{非空格} = 0$$ 了。那么这个式子在极端情况下会变为这样：

$$
c\_\text{显性数组}+c\_\text{隐性数组}=9
$$

现在我们知道，显性数组和隐性数组的关系一定是一个变大另外一个就会变小的。那么，其中一旦有一个数超过了 5，另外一个数就会变到 4。变为 4 意味着这个数：

1. 保持求和为 9；
2. 比互补的那个数组的规格要更小。

尤其是第二点。比如说显性数组规格开始等于 5 了，那么隐性数组就必须等于 4 以保证求和结果为 9（如果还有非空格的话，那么这个数还会更小）。但是，就这么光看极端情况的话，4 就已经比 5 还小了。这就说明了一点：我们无法让数组规格超过 5——因为互补的那一边一定会有一个规格更小的在等着呢。

这就是为什么数组没有规格超过 5 的情况：虽然理论成立，但实际上根本派不上用场。

### 高规格数组内可能会有低规格数组 <a href="#lower-sized-subset-can-exist-in-large-sized-subset" id="lower-sized-subset-can-exist-in-large-sized-subset"></a>

有些时候，互补过去可能看起来并不是那么正常。下面我们来看一则例子。

<figure><img src="/files/U6nnXxiv0oNWvSJ3Yk1j" alt=""><figcaption><p>互补不正常的情况</p></figcaption></figure>

如图所示，左边是一个隐性数对。按道理来说，取出其他空格就可以直接转为显性四数组（因为空格就 6 个，2 + 4 = 6）。

但是仔细看一下，其实不难发现到的是，右图的数组 4、6、7、8 其实是不太合理的。因为它其实可以只用三个单元格：`r8c236` 就行。这三个单元格的数字 6、7、8 已经足够构成显性数组。把 `r8c7` 招揽进来看起来并不是那么合理。

这个问题我们要先从互补性出发来解释它。首先，互补的时候，我们需要取出 `r8` 里所有没用到的空格一并形成数组结构，这使得冗余的部分 `r8c7` 会被纳入进来。其次，从规则上讲，显性数组本身就是看单元格内部是否在排列上形成占满的思维。三个的很好理解，四个的其实也不是不能理解。强行理解的话，你可以认为里面仅出现了 4、6、7、8 四种不同的数字，刚好在四个单元格里。为了尽量保证数组内部填充不会出现矛盾状态（数字重复什么的），我们会优先先去给可填位置更少的数字优先安排空格填进去。显然，数字 4 只有一处位置可填，所以我们“暂时”让 4 填在 `r8c6`。然后，其他的 6、7、8 分别安排在旁边的三个单元格 `r8c236` 里，似乎也不是不能形成四数组的形式：确实 4、6、7、8 把四个格子的填数机会给占满了。既然席位全部使用完了，那么我们自然就不难想到，同一行的其他单元格就没有机会填入 4、6、7、8，自然就可以使其产生合适的删数。只不过，这里的 4 安放尤为特殊：它仅有一处可填。仅有一处可填意味着 4 最终的摆放只可能在这个单元格上。

这是最难理解的点，也是破解这种奇怪的数组的关键点。数组的本质是，里面只能填入这些数字。“只能”意味着数字不论如何，在这个区域的别处，都不会填入，而填写的最终位置，尽可能在数组内部的这些格子里进行排列组合。如果它有两处，那么最终数组涉及的这个/这些数字，就只有这两处位置放，不是 a 就是 b；如果有三处，就是 a、b、c 来回换呗。那如果就一个位置呢？那我们只能让它就是这个数了。

如果你还理解不了，也没有关系。大不了你回去看看这个题。这个题里，6、7、8 的显性三数组是客观成立的。倘若我们先找到的是这个三数组，那么 4 就不会被纳入进来的话，那么它的删数就会算上 `r8c7(78)`。而要使得这个 4、6、7、8 显性四数组整体成立，`r8c7` 客观上还真不能存在除了 4、6、7、8 以外的数。那么，既然三数组成立了，`r8c7(678)` 就都能删掉。删掉之后，不就真只剩一个数了么？直接唯一余数，得到 `r8c7 = 4`。

不论哪种理解方式，这种情况都是可理解的。换言之，这种数组合法，但是有病。说这个的目的是告诉你两点：

1. 有些时候，显隐性互补后会补出来一个合法但有病的数组。这种数组的特征是，规格很大，但内部其实存在一个规格更小的数组，换言之，其中有一些格子可以不用，数组照样能成立；
2. 显隐性互补的特性在这种情况下用起来并不爽，而我们强行去理解它的本质，其实还是为了使得显隐性互补这个规则，在任何时候都客观成立，仅此而已。

那么，右图里的 `r25c7(4)` 的删数为什么成立，想必就不用我多解释了吧。

好了，所有直观技巧和局标技巧的全标状态就说完了。从下一篇文章开始，我们将正式进入到后续技巧的学习之中。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://sudoku.kazusa.tech/partial-marking-technique/05-strategying-phase-2/02-looking-of-direct-and-partial-marking-techniques-in-full-marking-grids.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
