鏈(Chain)是數獨高階技巧的核心,所有數獨盤勢都可以通過各種或簡單或復雜的鏈來解出答案。鏈的本質是命題之間的關系,在解數獨時,每個填數的步驟都可表現為在『A格中填入1』、『B格中填入2』這樣非真即假的直言命題形式,如果條件不充足,命題真假不能判定,我們把數獨中這種命題之間的真假關系稱之為鏈。用鏈解題的邏輯在於,籍由命題真假值的推導,根據鏈兩端點命題的真假來判斷其共同作用格內候選數的真假。
強關系(Strong Links)和弱關系(Weak Links)
鏈可分為強鏈與弱鏈,分別由強關系和弱關系構成,定義如下:
強關系——對應矛盾關系和下反對關系,兩個命題不可同假,必有一真(下反對關系可以同真);
弱關系——對應矛盾關系和上反對關系,兩個命題不可同真,必有一假(上反對關系可以同假)。

圖1小九宮格中,數字A只可能出現在R1C1和R3C3兩個格中。根據數獨規則,數字1-9在每個Unit(行Row、列Column、宮Box)中均需出現且僅出現1次,易知兩個A之間為矛盾關系,兩者不可同假,必為一真一假,可作出判斷:(1)若 R1C1≠A,則R3C3=A,兩個A之間為強關系,構成強鏈,記作R1C1{A}==R3C3{A};(2)若R1C1=1,則R3C3≠1,兩個A之間為弱關系,構成弱鏈,記作R1C1{1}—R3C3{1}。

再看一個例子,圖2中,數字A僅能出現在三個格中,根據數獨規則,可知必有一個A為真,其余兩個為假,則三個A兩兩之間不能同真,為上反對關系,可作出以下判斷:(1)若R1C1=A,則R2C2、R3C3≠A;(2)若R2C2=A,則R1C1、R3C3≠A;(3)若R3C3=A,則R1C1、R2C2≠A。
在本例中,存在三條弱鏈,分別是R1C1{A}—R2C2{A}, R1C1{A}—R3C3{A}, R2C2{A}—R3C3{A}。
在以上兩例中,可以看到,當某單元內特定候選數僅存在於兩個格中時,兩格中的該候選數是矛盾關系,二者之間既構成強鏈也構成弱鏈。而當該候選數存在於三個及以上格中時,兩兩之間是上反對關系,構成弱鏈。

強弱關系並不只局限於同一候選數,在圖3九宮格中,R1C1中僅存在候選數A、B,R3C3中僅存在候選數A、B、C。如前兩例,我們可知,R1C1格中的A和B為矛盾關系,二者之間即是強鏈也是弱鏈,R3C3中的A、B、C兩兩之間為上反對關系,構成弱鏈。

圖4是復雜一點的情況,R1C1、R23C2三格中共有{1234}四個候選數(這種n格中有n+1個候選數的結構稱為ALS——Almost Locked Set),根據數獨規則,可知這四個候選數中有且只有一個為假,由強弱鏈定義易知1、2、3和4之間,兩兩互為強鏈。與前述矛盾關系的例子不同,本例{1234}中必有三個為真,則其兩兩之間為下反對關系,可以同真,不能構成弱鏈。
鏈是如何工作的
以上我們對強弱鏈有了基本的了解,接下來我們把鏈連接起來看看會發生什么。首先是強弱強鏈,A==B—C==D,我們根據強弱鏈的定義,畫出真值表(只保留有效推導)

由圖5可以看到,不論A取真值還是假值,在鏈的起點A和終點D中至少有一真,即A與D之間為強關系。我們僅考慮A為假的情況(若其為真,則已經可以用來刪數),當A為假時,由於A、B、C、D由強弱鏈交替連接,推導如下:(1)若A為假,根據強鏈定義B只能為真;(2)若B為真,根據弱鏈定義C只能為假;(3)若C為假,根據強鏈定義D只能為真。
可見這種情況下只存在有一種有效推導形式,即A假D真,顯然,只要保證以強鏈始以強鏈終, 即使將這條鏈不斷延長下去仍可得出同樣結論:若起點為假則終點必然為真。綜上可知,強弱強鏈的兩端點互為強關系,必有一個為真。
我們再來看弱強弱鏈的推導。A—B==C—D,真值表如下:

可見A與D中至少有一假,二者互為弱關系。將其不斷延長,結果仍會是這樣,推導過程不再贅述。這種情況不能直接用來刪減A、D共同作用格的候選數。

如果將三條強鏈連接又會如何呢?A==B==C==D,從圖7真值表中可以看到,鏈的兩端點A和D一真一假、全真全假都有可能,也沒有刪減效果。
由以上推導我們可以總結,在數獨解題過程中,鏈的工作模式是,找到數獨盤勢中的強鏈,用弱鏈將之連接,在此過程中保證強弱交替,以強鏈始以強鏈終,則鏈的兩端點互為強關系,必有一真,若其存在共同作用格,則可對共同作用格內的相應候選數進行刪減。
鏈的簡單應用
來看一個例子,在圖8的盤勢中,可以找到一條從R1C4到R4C6的5的鏈(實線代表強鏈,虛線代表弱鏈,R1C4{5}==R1C9{5} — R4C9{5}==R4C6{5}),這條鏈強弱交替,且以強鏈始以強鏈終,可知R1C4的5與R4C6的5互為強關系,必有一個成立,不管哪個成立都可以刪去R1C4、R4C6共同作用格(綠色區域)里的5。推導過程如右:(1)若 R1C4=5,則R2C6、R5C4≠5;(2)若R1C4≠5 → R1C9=5 → R4C9≠ 5 → R4C6=5,則 R2C6、R5C4≠5。

ps:上圖中的結構稱為摩天樓(Skyscraper),是雙強鏈(強弱強鏈)的一種基礎應用。
再看一個稍微復雜點的例子,在圖9盤勢中,可以找到一條從R4C6到R6C1的6的鏈(實線箭頭代表強鏈,虛線代表弱鏈),可知R4C6與R6C1中的6互為強關系,必有一個成立,故可刪去R4C6與R6C1共同作用格(綠色區域)內的6。大家可自行推導以加強對鏈的掌握。

作者:零時四分_719b
鏈接:https://www.jianshu.com/p/4c794e9969c3
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。