【链式推理①】基础篇:强链接与弱链接
链式推理(Chain)是数独高级技巧的核心理论框架。几乎所有的高级排除技巧——从简单的X-Wing到复杂的AICs——都可以用链式推理来统一理解和描述。本文将深入探讨链式推理最基础也最重要的两个概念:强链接与弱链接。
什么是链?
在数独中,链(Chain)是候选数之间通过某种逻辑关系形成的连接序列。想象一下:如果我们能在候选数之间建立"如果A为真,则B为真/假"这样的推理关系,并将这些关系串联起来,就形成了链。
链的本质是逻辑传递:从一个起点出发,通过一系列的逻辑推断,得出某个结论。这个结论通常用于:
- 确定某个候选数必须为真(确定填入值)
- 确定某个候选数必须为假(排除候选数)
要理解链,我们必须首先理解构成链的基本单元:链接(Link)。链接描述的是两个候选数之间的逻辑关系,根据关系的强度分为强链接和弱链接。
强链接(Strong Link)
两个候选数A和B之间存在强链接,当且仅当:A和B恰好一个为真,一个为假。
换言之,如果A为假则B必为真,如果A为真则B必为假(互斥且完备)。
记法:A = B 或 A ═══ B(双线表示)
强链接的来源
强链接可以来自以下几种情况:
1. 双值格内的强链接(Bi-value Cell)
当一个格子只有两个候选数时,这两个候选数之间存在强链接。
逻辑:如果4为假,该格子必须是7;如果7为假,该格子必须是4。
双值格是最常见的强链接来源,因为它直观明了:格子要么填这个数,要么填那个数。
2. 共轭对形成的强链接(Conjugate Pair)
当某个数字在一个单元(行、列或宫)内只出现在两个位置时,这两个位置的该候选数之间存在强链接。这种关系称为共轭对。
逻辑:第5行必须有一个3。如果R5C2不是3,R5C8必须是3;反之亦然。
共轭对强链接的两端是同一个数字在不同位置,而不是同一位置的不同数字。这与双值格内的强链接有本质区别。
3. 分组强链接(Grouped Strong Link)
更广泛地说,当一组候选数与另一组候选数之间满足"恰好一组为真"的关系时,就存在强链接。这在高级技巧中会涉及,本系列第三篇将详细讨论。
强链接的核心性质
- 恰好一真:强链接的两端恰好一个为真,一个为假
- 假传真:如果一端为假,另一端必为真
- 真传假:如果一端为真,另一端必为假
弱链接(Weak Link)
两个候选数A和B之间存在弱链接,当且仅当:如果A为真,则B必定为假。
换言之,A和B至多有一个为真(可能都为假,但不可能都为真)。
记法:A - B 或 A ─── B(单线表示)
弱链接的来源
弱链接同样有多种来源:
1. 同一格子内不同候选数之间的弱链接
在同一个格子内,任意两个不同的候选数之间都存在弱链接。
逻辑:一个格子只能填一个数。如果填了1,就不可能是5。
2. 同单元内相同候选数之间的弱链接
在同一个单元(行、列或宫)内,同一个数字的所有候选位置之间两两存在弱链接。
逻辑:一个宫内同一数字只能出现一次。如果R1C7是6,则R2C8和R3C9都不能是6。
相比强链接,弱链接更加普遍。实际上,数独的基本规则(行、列、宫内数字不重复;一格只填一数)本质上就是定义了大量的弱链接关系。
弱链接的核心性质
- 至多一真:弱链接的两端至多有一个为真
- 真传假:如果一端为真,另一端必为假
- 可能共假:两端可以同时为假(这点与强链接不同!)
强链接与弱链接的对比
理解强链接和弱链接的区别是掌握链式推理的关键。让我们通过一个对比表格来总结:
| 特性 | 强链接 (Strong Link) | 弱链接 (Weak Link) |
|---|---|---|
| 核心性质 | 恰好一真一假 | 至多一个为真 |
| 逻辑传递 | 假 → 真,真 → 假 | 真 → 假 |
| 可否同真 | ✗ 不可以 | ✗ 不可以 |
| 可否同假 | ✗ 不可以 | ✓ 可以 |
| 记号 | ═══(双线)或 = | ───(单线)或 - |
| 常见来源 | 双值格、共轭对 | 同格异数、同单元同数 |
强链接的特殊情况:同时也是弱链接
这里有一个重要的概念需要理解:强链接往往同时也是弱链接。
强链接角度:如果4为假,7必为真 → 存在强链接
弱链接角度:如果4为真,7必为假 → 也存在弱链接
结论:这两个候选数之间既是强链接也是弱链接!
强链接角度:如果R5C2的3为假,R5C8的3必为真 → 存在强链接
弱链接角度:如果R5C2的3为真,R5C8的3必为假(同行不能有两个3)→ 也存在弱链接
结论:共轭对也同时满足强弱两种链接!
当两个候选数之间恰好满足"一真一假"的关系(即不可能同真,也不可能同假)时,它们之间既是强链接也是弱链接。这种关系是最"强"的链接关系,在链的构建中非常有用。
记忆口诀:双值格和共轭对,强弱两相随。
"看到"的概念
在链式推理中,经常会用到"看到"(see)这个概念。理解"看到"对于识别链接关系至关重要。
候选数A"看到"候选数B,意味着A和B之间存在弱链接。
如果A为真,则B必为假——即A能"排除"B。
"看到"关系存在于:
- 同一格子的不同候选数之间
- 同一行中相同候选数之间
- 同一列中相同候选数之间
- 同一宫中相同候选数之间
这个概念在后续讨论链的应用时会频繁使用,比如"两端能同时看到的候选数可以被排除"。
为什么区分强弱链接如此重要?
强链接和弱链接的区分是链式推理的基石。它们的区别决定了:
强链接允许从"假"推出"真";弱链接允许从"真"推出"假"。链式推理正是利用这两种不同的传递方向来构建复杂的逻辑推导。
在构建链时,必须正确识别每一步是强链接还是弱链接,才能保证推理的正确性。错误地把弱链接当作强链接使用,会导致错误的结论。
许多看似不同的技巧(如X-Wing、Skyscraper、XY-Wing等)本质上都是特定模式的链。理解了强弱链接,就能用统一的框架理解这些技巧。
下一步
本文介绍了链式推理最基础的两个概念:强链接和弱链接。理解了这两个概念后,我们就可以开始学习如何将它们组合起来构建完整的链。
在下一篇文章中,我们将讨论:
- 如何交替使用强链接和弱链接构建链
- 链的真假状态传递规则
- 链式推理的"着色"思想
- 从链的两端得出结论的方法