【鏈式推理①】基礎篇:強連結與弱連結
鏈式推理(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等)本質上都是特定模式的鏈。理解了強弱連結,就能用統一的框架理解這些技巧。
下一步
本文介紹了鏈式推理最基礎的兩個概念:強連結和弱連結。理解了這兩個概念後,我們就可以開始學習如何將它們組合起來構建完整的鏈。
在下一篇文章中,我們將討論:
- 如何交替使用強連結和弱連結構建鏈
- 鏈的真假狀態傳遞規則
- 鏈式推理的"著色"思想
- 從鏈的兩端得出結論的方法