【鏈式推理①】基礎篇:強連結与弱連結
鏈式推理(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等)本质上都是特定模式的鏈。理解了強弱連結,就能用統一的框架理解這些技巧。
下一步
本文介绍了鏈式推理最基礎的兩個概念:強連結和弱連結。理解了這兩個概念後,我们就可以開始學習如何将它们組合起来构建完整的鏈。
在下一篇文章中,我们将討論:
- 如何交替使用強連結和弱連結构建鏈
- 鏈的真假状态传递規則
- 鏈式推理的"着色"思想
- 從鏈的兩端得出结论的方法