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翼 的核心原理。
观察图中标有绿色候选数的 4 个格子,记作 {A7, F7, A9, B9} 。这些格子里的候选数是 {1, 3, 5, 9} 。也就是说, 4 个格子正好有 4 个不同的候选数,这和 显集 相似,只是这些格子不在同一个区域内。
让我们逐个看看这些候选数的分布有什么特点。对于候选数 1 ,我们发现它都出现在 宫7 里。
我们说候选数 1 在格子集 {A7, F7, A9, B9} 中是 受限 (Restricted)的,意思是数字 1 在这个格子集中最多只能填一次。
候选数 5 都出现在 行7 里,所以 5 也是 受限 的。
候选数 9 也都出现在 宫7 里,所以 9 同样是 受限 的。
而候选数 3 呢?没有一个区域能包含所有候选数 3 ,所以 3 是 不受限 (Unrestricted)的,也就是可能会填多次。
现在要开始最核心的推理了。
这 4 个格子必须填 4 个数字。我们知道 1 、 5 、 9 都是 受限 的,最多只能各填一次。那么 不受限 的 3 至少要填一次。
为什么 3 至少要填一次?我们用反证法。假设 3 一次都不填,那么这四个格子就只能填 1 、 5 、 9 这三个数字。但这三个数字都是 受限 的,最多只能各填一次,这样最多只能填三个格子,总会有一个格子没数字可填,谜题就无解了。所以假设不成立,也就是 3 至少要填一次。
因此,任何能同时看到这 4 个格子中所有含候选数 3 的格子的格子,都可以排除 3 。
格子 B7 能看到所有含候选数 3 的格子,所以 B7 里的 3 可以排除。
推广
斯特克XYZ翼 的一般定义:当 n 个格子有 n 个候选数时,如果其中 n - 1 个候选数是 受限 的,只有 1 个是 不受限 的,这样的模式称为 斯特克XYZ翼 。
我们通常把这个 不受限 的候选数记作 Z 。我们可以推理得知, Z 在这 n 个格子中至少要填一次。
XYZ翼
XYZ翼 是 斯特克XYZ翼 在 n = 3 时的一种特殊情况。
XYZ翼的特点
- 一个中心格子含候选数 {X, Y, Z} 。
- 中心格子能看到另外两个格子,分别含候选数 {X, Z} 和 {Y, Z} 。
- 这 3 个格子不在同一区域中。
看例子:
图中 B5 是中心格子, C4 和 G5 是另外两个格子。
为什么 XYZ翼 是 斯特克XYZ翼 的特殊情况?
观察这个例子。 3 个格子 {B5, C4, G5} 不在同一区域,共有 3 个候选数 {1, 3, 5} 。其中 1 、 3 是 受限 的, 5 是 不受限 的,符合 斯特克XYZ翼 的定义。
所以 5 在这 3 个格子中至少要填一次。
因此,格子 A5 和 C5 里的 5 可以排除,因为它们能看到所有含 5 的格子。
XY翼
XY翼 (XY-Wing)也是 斯特克XYZ翼 在 n = 3 时的一种特殊情况。
XY翼的特点
- 一个中心格子含候选数 {X, Y} 。
- 中心格子能看到另外两个格子,分别含候选数 {X, Z} 和 {Y, Z} 。
- 这 3 个格子不在同一区域中。
XYZ翼 和 XY翼 的唯一区别是 XY翼 的中心格子不含 Z 。
看例子:
图中 F2 是中心格子, D1 和 F8 是另外两个格子。
XY翼 为什么是 斯特克XYZ翼 的特殊情况,和 XYZ翼 类似,这里就不详细解释了。
根据 斯特克XYZ翼 ,唯一 不受限 的候选数 4 在这 3 个格子中至少要填一次,也就是说, D1 和 F8 中必然有一个要填 4 。
所以,能同时看到它们的格子 D8 和 F3 里的 4 可以排除。
奥比万XYZ翼
让我们通过一个例子来学习 奥比万XYZ翼 (Obiwahn’s XYZ Wing),请确保你已经掌握了 斯特克XYZ翼。
奥比万XYZ翼 也称为 分布式互斥子集 (Distributed Disjoint Subsets)。
奥比万UVWXYZ翼
格子集 {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定义
一个格子集合 ,它不是任何一个区域的子集,其候选数集合为 ,有 。且最多存在1个候选数,,在 中存在至少2个相互不可见的格子中包含。这种模式称为 一般XYZ翼 。
该定义包含了斯特克XYZ翼和奥比万XYZ翼等所有情况。
情况一:z存在
定理1: 存在一个格子集合 ,它不是任何一个区域的子集,其候选数集合为 ,有 。恰好存在1个候选数,,在 中存在至少2个相互不可见的格子中包含。则 中至少有一个格子要填。
这就是斯特克XYZ翼的情况。
证明: 我们知道,其他候选数所在的格子都是相互可见的,也就是其他候选数在中最多只能填1次。
假设不填写在中。
那么我们最多只能填入个不同的数字。
但我们有个格子需要填数,所以,至少有一个格子无法填入任何数。
这与数独必须填满所有格子的规则矛盾。
因此,候选数必须在某个格子中被选择。
推论1: 如果一个格子可以看到所有中包含的格子,则该格子中的可以消除。
情况二:z不存在
定理2: 存在一个格子集合 ,它不是任何一个区域的子集,其候选数集合为 ,有 。不存在候选数,,在 中存在至少2个相互不可见的格子中包含。则在中, 中的数字恰好每个数字填1次。
这就是奥比万XYZ翼的情况。
证明: 由于我们有个格子和个候选数,且每个候选数最多填1次,所以每个候选数必须正好填一次,才能填满所有格子。
你可能发现了,这个和显集非常像。
推论2: 对于每个候选数,如果一个格子能同时看到中包含的所有格子,则该格子中的可以消除。