XYZ翼技巧

斯特克XYZ翼

总览

在数独的技巧中, XYZ翼 (XYZ-Wing) 家族是非常有意思的一类技巧,在解题中有时能起到关键的作用。今天我们要学习 斯特克XYZ翼 (StrmCkr’s XYZ-Wing),以及它的两种特殊形式: XY翼XYZ翼

XYZ翼 家族的技巧命名是根据等级 n 来的, n 就是格子的数量, n = 3 时叫 XYZ翼n = 4 时叫 WXYZ翼 ,以此类推。

斯特克WXYZ翼

斯特克WXYZ翼 是数独爱好者斯特克 (StrmCkr) 提出的一种技巧,是 XYZ翼 的扩展。掌握了这个技巧,你就能轻松掌握 XY翼XYZ翼

让我们通过例子来学习 斯特克WXYZ翼 的核心原理。

斯特克WXYZ翼示例1

观察图中标有绿色候选数的 4 个格子,记作 {A7, F7, A9, B9} 。这些格子里的候选数是 {1, 3, 5, 9} 。也就是说, 4 个格子正好有 4 个不同的候选数,这和 显集 相似,只是这些格子不在同一个区域内。

斯特克WXYZ翼示例1中候选数1的位置

让我们逐个看看这些候选数的分布有什么特点。对于候选数 1 ,我们发现它都出现在 宫7 里。

我们说候选数 1 在格子集 {A7, F7, A9, B9} 中是 受限 (Restricted)的,意思是数字 1 在这个格子集中最多只能填一次。

斯特克WXYZ翼示例1中候选数5的位置

候选数 5 都出现在 行7 里,所以 5 也是 受限 的。

斯特克WXYZ翼示例1中候选数9的位置

候选数 9 也都出现在 宫7 里,所以 9 同样是 受限 的。

斯特克WXYZ翼示例1中候选数3的位置

而候选数 3 呢?没有一个区域能包含所有候选数 3 ,所以 3不受限 (Unrestricted)的,也就是可能会填多次。

现在要开始最核心的推理了。

4 个格子必须填 4 个数字。我们知道 159 都是 受限 的,最多只能各填一次。那么 不受限3 至少要填一次。

为什么 3 至少要填一次?我们用反证法。假设 3 一次都不填,那么这四个格子就只能填 159 这三个数字。但这三个数字都是 受限 的,最多只能各填一次,这样最多只能填三个格子,总会有一个格子没数字可填,谜题就无解了。所以假设不成立,也就是 3 至少要填一次。

因此,任何能同时看到这 4 个格子中所有含候选数 3 的格子的格子,都可以排除 3

格子 B7 能看到所有含候选数 3 的格子,所以 B7 里的 3 可以排除。

推广

斯特克XYZ翼 的一般定义:当 n 个格子有 n 个候选数时,如果其中 n - 1 个候选数是 受限 的,只有 1 个是 不受限 的,这样的模式称为 斯特克XYZ翼

我们通常把这个 不受限 的候选数记作 Z 。我们可以推理得知, Z 在这 n 个格子中至少要填一次。

XYZ翼

XYZ翼斯特克XYZ翼n = 3 时的一种特殊情况。

XYZ翼的特点

  1. 一个中心格子含候选数 {X, Y, Z}
  2. 中心格子能看到另外两个格子,分别含候选数 {X, Z}{Y, Z}
  3. 3 个格子不在同一区域中。

看例子:

XYZ翼示例1

图中 B5 是中心格子, C4G5 是另外两个格子。

为什么 XYZ翼斯特克XYZ翼 的特殊情况?

观察这个例子。 3 个格子 {B5, C4, G5} 不在同一区域,共有 3 个候选数 {1, 3, 5} 。其中 13受限 的, 5不受限 的,符合 斯特克XYZ翼 的定义。

所以 5 在这 3 个格子中至少要填一次。

因此,格子 A5C5 里的 5 可以排除,因为它们能看到所有含 5 的格子。

XY翼

XY翼 (XY-Wing)也是 斯特克XYZ翼n = 3 时的一种特殊情况。

XY翼的特点

  1. 一个中心格子含候选数 {X, Y}
  2. 中心格子能看到另外两个格子,分别含候选数 {X, Z}{Y, Z}
  3. 3 个格子不在同一区域中。

XYZ翼XY翼 的唯一区别是 XY翼 的中心格子不含 Z

看例子:

XY翼示例1

图中 F2 是中心格子, D1F8 是另外两个格子。

XY翼 为什么是 斯特克XYZ翼 的特殊情况,和 XYZ翼 类似,这里就不详细解释了。

根据 斯特克XYZ翼 ,唯一 不受限 的候选数 4 在这 3 个格子中至少要填一次,也就是说, D1F8 中必然有一个要填 4

所以,能同时看到它们的格子 D8F3 里的 4 可以排除。

奥比万XYZ翼

让我们通过一个例子来学习 奥比万XYZ翼 (Obiwahn’s XYZ Wing),请确保你已经掌握了 斯特克XYZ翼

奥比万XYZ翼 也称为 分布式互斥子集 (Distributed Disjoint Subsets)。

奥比万UVWXYZ翼

奥比万UVWXYZ翼示例1

格子集 {G4, B5, I5, A6, H6, I6} 中,有候选数 {1, 3, 4, 5, 6, 8} (图中绿色的候选数)。

这个格子集不在一个区域中,且格子数量和候选数数量相等都是 6

另外,我们观察到,这些候选数都是受限的。

这意味着每个候选数都必须正好填一次(类似于 显集 )。

为什么?

我们用反证法证明。我们知道这些候选数每个最多只能填一次,假设 {1,3,4,5,6,8} 中至少存在一个候选数,它在格子集 {G4, B5, I5, A6, H6, I6} 中一次都不填。那么,其它候选数最多只能填满5个格子,有 1 个格子将会没有数字可填,谜题无解。所以,假设不成立,也就是,每个候选数都至少填一次,而每个候选数最多只能填一次,所以,每个候选数都正好填一次。

然后,我们就可以依次根据每个候选数进行消除了。

例如,对于候选数1,所出现的格子为 {G4, I5},所以,同时看到这两个格子的格子中的候选数 1 可以消除,即 I4 中的 1 可以消除。

其它候选数也是一样。图中红色候选数表示所有可以消除的候选数。

一般XYZ翼技巧的理论(选学)

一般XYZWing定义

一个格子集合 CC ,它不是任何一个区域的子集,其候选数集合为 SS ,有 C=S|C| = |S| 。且最多存在1个候选数zzzSz \in S,在 CC 中存在至少2个相互不可见的格子中包含zz。这种模式称为 一般XYZ翼

该定义包含了斯特克XYZ翼和奥比万XYZ翼等所有情况。

情况一:z存在

定理1: 存在一个格子集合 CC ,它不是任何一个区域的子集,其候选数集合为 SS ,有 C=S|C| = |S|。恰好存在1个候选数zzzSz \in S,在 CC 中存在至少2个相互不可见的格子中包含zz。则CC 中至少有一个格子要填zz

这就是斯特克XYZ翼的情况。

证明: 我们知道,其他候选数所在的格子都是相互可见的,也就是其他候选数在CC中最多只能填1次。

假设zz不填写在CC中。

那么我们最多只能填入n1n-1个不同的数字。

但我们有nn个格子需要填数,所以,至少有一个格子无法填入任何数。

这与数独必须填满所有格子的规则矛盾。

因此,候选数zz必须在某个格子中被选择。

推论1: 如果一个格子可以看到所有CC中包含zz的格子,则该格子中的zz可以消除。

情况二:z不存在

定理2: 存在一个格子集合 CC ,它不是任何一个区域的子集,其候选数集合为 SS ,有 C=S|C| = |S|。不存在候选数zzzSz \in S,在 CC 中存在至少2个相互不可见的格子中包含zz。则在CC中, SS 中的数字恰好每个数字填1次。

这就是奥比万XYZ翼的情况。

证明: 由于我们有nn个格子和nn个候选数,且每个候选数最多填1次,所以每个候选数必须正好填一次,才能填满所有格子。

你可能发现了,这个和显集非常像。

推论2: 对于每个候选数siSs_i \in S ,如果一个格子能同时看到CC中包含sis_i的所有格子,则该格子中的sis_i可以消除。