解题技巧
XY链技巧详解:双值格子的链式推理
XY链(英文称 XY-Chain)是数独高级技巧中一种强大的链式推理方法。它是XY翼的扩展形式,通过多个双值格子(只有两个候选数的格子)形成的链式结构进行候选数排除。
核心原理:
XY链由一系列双值格子组成,相邻格子之间共享一个候选数。链的起点和终点各有一个不被共享的候选数,如果这两个数字相同(记为Z),那么能同时看到链首和链尾的格子可以删除候选数Z。原因是:沿着链推理,Z必定出现在链首或链尾。
XY链由一系列双值格子组成,相邻格子之间共享一个候选数。链的起点和终点各有一个不被共享的候选数,如果这两个数字相同(记为Z),那么能同时看到链首和链尾的格子可以删除候选数Z。原因是:沿着链推理,Z必定出现在链首或链尾。
XY链原理示意图:链首{Z,A}和链尾{C,Z}共享候选数Z,Z必在链首或链尾,公共可见区可删除Z
在阅读本文前,建议先了解数独行列宫的命名规则、数对法和XY翼的基本概念。
XY链的结构
XY链包含以下关键元素:
- 链节点:每个节点都是一个双值格子{A,B}
- 链连接:相邻节点必须能互相"看到"(同行、列或宫),且共享一个候选数
- 链首和链尾:各有一个不与相邻节点共享的候选数
- 排除条件:链首和链尾的非共享候选数相同时,可进行排除
链的表示形式:A(x,y) → B(y,z) → C(z,w) → ... 其中括号内是候选数,箭头表示链的连接方向,相邻节点共享一个数字(如y、z)。
为什么XY链有效?
1
链式传递:假设链为 A{X,Y} → B{Y,Z} → C{Z,W},如果A=X,则B必须=Z(因为B不能=Y),则C必须=W(因为C不能=Z)。
2
两种可能:链首有两个候选数,假设为{P,Q},其中Q与下一个节点共享。如果链首=P,推理结束;如果链首=Q,则沿链传递到链尾。
3
关键结论:如果链首的非共享数P等于链尾的非共享数,那么P必定出现在链首或链尾之一。
4
排除目标:能同时看到链首和链尾的格子不能包含P(因为P一定在链首或链尾)。
实例一:4节点XY链
我们来看一个简单的4节点XY链示例。
图1:XY链 R2C2{3,7} → R2C6{3,5} → R9C6{2,5} → R9C7{2,7},可从R2C7删除候选数7
分析过程
1
识别链节点:
- R2C2:候选数 {3, 7}(链首)
- R2C6:候选数 {3, 5}
- R9C6:候选数 {2, 5}
- R9C7:候选数 {2, 7}(链尾)
2
验证链连接:
- R2C2 与 R2C6 在同一行(第2行),共享候选数 3
- R2C6 与 R9C6 在同一列(第6列),共享候选数 5
- R9C6 与 R9C7 在同一行(第9行),共享候选数 2
3
确定排除数字:
- 链首R2C2{3,7}的非共享数 = 7(3被R2C6共享)
- 链尾R9C7{2,7}的非共享数 = 7(2被R9C6共享)
- 两者相同!Z = 7
4
推理过程:
- 如果R2C2=7 → 7在链首
- 如果R2C2=3 → R2C6不能是3 → R2C6=5 → R9C6不能是5 → R9C6=2 → R9C7不能是2 → R9C7=7 → 7在链尾
- 无论哪种情况,7必定在R2C2或R9C7中
5
找到删除目标:R2C7 能同时看到链首R2C2(同行)和链尾R9C7(同列)。
结论:
XY链:R2C2{3,7} → R2C6{3,5} → R9C6{2,5} → R9C7{2,7}
可从 R2C7 删除候选数 7。
XY链:R2C2{3,7} → R2C6{3,5} → R9C6{2,5} → R9C7{2,7}
可从 R2C7 删除候选数 7。
实例二:10节点长链
XY链可以很长,下面是一个10节点的例子,展示链式推理的强大能力。
图2:XY链 R2C5{1,5} → R2C1{1,5} → R1C1{5,8} → R1C7{7,8} → R3C7{7,8} → R3C2{4,8} → R7C2{4,8} → R8C1{4,8} → R8C7{4,9} → R8C3{5,9},可从R8C5删除候选数5
分析过程
1
识别链节点(10个):
- R2C5:{1, 5}(链首)
- R2C1:{1, 5}
- R1C1:{5, 8}
- R1C7:{7, 8}
- R3C7:{7, 8}
- R3C2:{4, 8}
- R7C2:{4, 8}
- R8C1:{4, 8}
- R8C7:{4, 9}
- R8C3:{5, 9}(链尾)
2
验证链连接:
- R2C5 → R2C1:同行,共享 1(或5)
- R2C1 → R1C1:同列,共享 5
- R1C1 → R1C7:同行,共享 8
- R1C7 → R3C7:同列,共享 7(或8)
- R3C7 → R3C2:同行,共享 8
- R3C2 → R7C2:同列,共享 4(或8)
- R7C2 → R8C1:同宫,共享 8
- R8C1 → R8C7:同行,共享 4
- R8C7 → R8C3:同行,共享 9
3
确定排除数字:
- 链首R2C5{1,5}的非共享数 = 5(1被R2C1共享)
- 链尾R8C3{5,9}的非共享数 = 5(9被R8C7共享)
- 两者相同!Z = 5
4
推理结论:
无论链首R2C5是1还是5,候选数5必定出现在链首R2C5或链尾R8C3中。
5
找到删除目标:R8C5 能同时看到链首R2C5(同列)和链尾R8C3(同行)。
结论:
XY链(10节点):R2C5 → R2C1 → R1C1 → R1C7 → R3C7 → R3C2 → R7C2 → R8C1 → R8C7 → R8C3
可从 R8C5 删除候选数 5。
XY链(10节点):R2C5 → R2C1 → R1C1 → R1C7 → R3C7 → R3C2 → R7C2 → R8C1 → R8C7 → R8C3
可从 R8C5 删除候选数 5。
如何发现XY链?
寻找XY链需要系统化的方法:
1
标记双值格子:首先找出所有只有两个候选数的格子。
2
选择起点:选择一个双值格子作为链首,记录它的两个候选数{P,Q}。
3
延伸链条:找能"看到"当前节点且与之共享一个候选数的双值格子作为下一个节点。
4
检查终止条件:每延伸一步,检查链尾的非共享数是否等于链首的非共享数P。
5
找删除目标:找能同时看到链首和链尾且包含P的格子。
注意事项:
- 链中每个节点必须是双值格子
- 相邻节点必须能互相看到(同行、列或宫)
- 相邻节点必须共享一个候选数
- 排除条件:链首和链尾的非共享候选数相同
- XY翼是XY链的特例(长度为3的链)
XY链与XY翼的关系
XY翼可以视为长度为3的XY链:
- XY翼:轴心{X,Y} → 翼1{X,Z} → 翼2{Y,Z}... 等等,这实际上不是标准链形式
- 实际关系:XY翼的结构是"Y"形,而XY链是线性的
- 共同点:都利用双值格子进行推理排除
- 区别:XY链要求链式连接,XY翼要求轴心同时看到两翼
技巧总结
XY链的应用要点:
- 节点要求:所有节点都是双值格子
- 连接要求:相邻节点能互相看到且共享一个候选数
- 排除条件:链首和链尾的非共享候选数相同
- 删除目标:能同时看到链首和链尾的格子中的该候选数
- 链长度:理论上可以任意长,越长越难发现但排除能力越强
立即练习:
开始一局数独游戏,尝试使用XY链进行排除!先找到所有双值格子,然后尝试把它们连成链。
开始一局数独游戏,尝试使用XY链进行排除!先找到所有双值格子,然后尝试把它们连成链。