第20講:雙強鏈(多寶魚)
標準鏈(Alternating Inference Chain),簡稱AIC,搜索數獨貼吧等等地方,或多或少都可以查到關於它的資料,但是這個東西,卻一直讓人搞不懂到底如何使用和運用,甚至搞不清其中的原理和邏輯。接下來我就將帶領大家從零入門數獨技巧裡面這個難以攻破的大分支:鏈。
請注意的是,學習鏈的過程之中,請暫時忘記之前對於試數或猜數相關的內容,這一點很重要,否則你可能在基礎學習階段把鏈和試數搞混淆,導致學習的興緻不高,引起無法進步的結果。
Part 1 摩天樓(Skyscraper)
如圖所示,我們觀察到一個特別的結構。首先是r39,r39上都有關於4的共軛對,分別是r3c48(4)和r9c47(4)。而奇怪的是,它長得很像之前學習到的一種數獨技巧:共軛二鏈列。而且用這個技巧完全可以得到應有的所有刪數。而現在我們用另外一個視角來看這個結構。
r3c8(4)一共有兩種可能:要麼r3c8=4,要麼r3c8<>4。那麼我們來看一下,當r3c8<>4時,會怎麼樣呢?
r3c8<>4時,由於r3(4)共軛對,所以r3c4=4,所以r9c4<>4了。於是,r9(4)共軛對就用起來了:因為r9c4<>4,所以r9c7=4。那麼縮略一下說法,就是當r3c8<>4時,r9c7=4。
r3c8=4是另外一種情況,這意味著r3c8自己可以直接填4。
那麼綜上,一共只有兩種填數情況,卻導致了r9c7和r3c8裡面至少一個單元格是填4的,所以r9c7(4)和r3c8(4)共同對應的地方,就不應該填入4。
那麼,為什麼說「至少有一個單元格」,而不是「有且僅有一個單元格」呢?這一點,我們在規則Wing結構一節裡面已經提到過一部分原因,這裡針對這個題目再闡述一下:雖然看似r3c8擁有填4和不填4的兩種填法是「互斥」的兩種情況,但是「當r3c8<>4時,r9c7=4」成立,也並不意味著「當r3c8=4時,r9c7<>4」一定成立。所以,r3c8=4時,也是有可能使得r9c7=4的。所以,我們說,r9c7和r3c8至少有一格是填4的。
由於r3c8(4)和r9c7(4)至少一個單元格填4,所以不管怎麼個情況,它們共同對應的地方,就不應該再含有候選數4,所以刪除掉它們。對應圖中的話,就應該為r7c8<>4、r1c7<>4。
這個技巧稱為摩天樓(Skyscraper),而摩天樓,則屬於雙強鏈(Turbot Fish)裡面的一個特殊的結構。那麼,什麼是雙強鏈呢?雙強鏈,顧名思義,也就是有兩個強關係的鏈。那,什麼是強關係呢?接下來我們來介紹一下,關於標準鏈的基本術語及內容。
Part 2 鏈的基本內容和相關術語
我們從剛才的示例之中,學習到了雙強鏈的其中一個特殊結構:摩天樓。我們定義出幾種說法,為了方便觀察和理解:
- 真(True),指的是某一個候選數直接填入到盤面之中的情況,即用等號
=
表示的情況; - 假(False),指的是某一個候選數從盤面之中消失的情況,即用不等號
!=
或<>
表示的情況; - 強關係(Strong Inference):如果某一候選數為假,則得到另外一個候選數為真的,則稱這兩個候選數有強關係;
- 弱關係(Weak Inference):如果某一候選數為真,則得到另外一個候選數為假的,則稱為兩個候選數有弱關係;
- 節點(Node):結構的每一個真假討論的點都是一個節點。
那麼來總結一下剛才的推導方式:
分某一個候選數的真假兩種填數情況進行討論,當其為假時,引出一個真和假的交替推導序列,然後得到尾部為真的情況。而因為頭部還有可能為真,所以頭尾的兩個候選數至少有一個為真,因此刪除頭尾兩候選數的交集。
那麼,這個「真和假的交替推導序列」就被稱為標準鏈。一般而言,只要我們畫出標準鏈結構,就可以直接在圖上體現邏輯,也就可以不需要給不知道邏輯的小夥伴講解了。但是,我們有一個約定。
一般意義上,畫鏈有三種畫法:箭頭畫法、單雙線畫法和圓假方真畫法。
- 箭頭畫法:將AIC之中,強關係用實線箭頭體現,弱關係用虛線箭頭體現,節點沒有畫法要求;
- 單雙線畫法:將AIC之中,強關係用雙實線體現,弱關係用單實線體現,節點沒有畫法要求;
- 圓假方真畫法:將AIC之中,強弱關係均用實線箭頭體現,節點為假的用圓標出,節點為真的用矩形標出。
本教程採用箭頭畫法。所以摩天樓就被畫成了這樣:
圖由Hodoku軟體生成,雖然圖中有節點已經標註了顏色作為區分,但是有些時候Hodoku軟體無法計算一些AIC,所以有時候不會標註節點的顏色。
這樣一來,我們就可以把之前的邏輯用強弱關係重新解釋一遍了:
設r3c8(4)為假,則r3c8(4)和r3c4(4)有強關係,r3c4(4)和r9c4(4)有弱關係,r9c4(4)和r9c7(4)有強關係。
因為邏輯的推導是「假 -> 真 -> 假 -> 真」這樣,設開頭為假,並且真假交替出現的,所以AIC具有兩個基本特性:
- AIC必須以強關係開頭、強關係結尾;
- AIC強弱關係是交替出現的。
那麼,還有一個由這兩點可以得到的推論。必須強關係開頭、強關係結尾,並且強弱關係交替出現,那麼結構只可能是「強弱強」、「強弱強弱強」等等了,那麼強關係數量始終會比弱關係數量多一個。那麼強關係設有n個的話,弱關係就得有(n-1)個,那麼組合形成的AIC就有(2n-1)個。因為n是正整數,所以(2n-1)就應該是一個單數(正奇數)。所以,AIC的長度(Length),即AIC涉及的強弱關係的總數,就一定是一個單數。而節點數量一定比長度大1,所以節點數應該為2n個,則為一個雙數(正偶數)。
那麼,雙強鏈,顧名思義,有兩個強關係,所以雙強鏈的長度為3。
好了,那麼存在一些問題。比如示例上的c4(4)。因為c4(4)也是共軛對,所以它肯定可以滿足強關係的定義:當r3c4<>4時,r9c4=4。那為什麼r3c9(4)和r9c4(4)就必須得是弱關係?因為我們在使用鏈的過程之中,強弱關係是交替出現的。換句話說,真假情況是交替出現的,當AIC的開頭r3c8(4)假設為假後,推理到r3c4(4)時,就已經是真了,所以r3c4(4)和r9c4(4)使用的是弱關係的定義,雖然滿足強關係這一說法。
也就是說,網上給出的一部分資料,寫的是「『強強強』的標準鏈結構亦成立」,這種說法是錯誤的。希望你在這一點上引起注意和重視。
最後,再說兩個理論的東西。
第一,鏈的文本表述。
我們使用一個等號=
或兩個等號連寫==
表示強關係,而我們使用一個減號-
或兩個減號連寫--
表示弱關係。比如說上述的鏈結構就表示成:
r3c8(4)=r3c4(4)-r9c4(4)=r9c7(4)
刪數則使用推出符號=>
表示,結論寫在推出符號之後。
r3c8(4)=r3c4(4)-r9c4(4)=r9c7(4) => r1c7, r7c8<>4
結論可寫可不寫,教程為方便閱讀,故均會寫出結論。然後,如果涉及的數值一樣,就直接簡寫成一個,然後用小括弧()
括起來,即:
(r3c8=r3c4-r9c4=r9c7)(4) => r1c7, r7c8<>4
就可以了,甚至是
(r3(c8=c4)-r9(c4=c7))(4) => r1c7, r7c8<>4
這樣都可以。不過為了可讀性,寫出來的表示方式最好易懂。
第二,是最後幾個鏈內術語的定義。
- 鏈頭或鏈首(Head),指的是鏈結構在推導過程之中的第一個節點;
- 鏈末或鏈尾(Bottom),指的是鏈結構在推導過程之中的最後一個節點;
- 交集或共同作用域(Intersection in Chain),指的是鏈頭和鏈尾共同對應的地方(或者說,都可以看得到的地方)。
好了,介紹完畢所有的術語和理論知識之後,接下來繼續講解雙強鏈的基本結構。
Part 3 雙線風箏(Two-string Kite)
如圖所示,這裡簡單敘述一下邏輯,需要你自己根據剛才的知識推導一遍哦!
如果r1c9(8)為假,則r1c5(8)真,r3c4(8)假,r7r4(8)真。而r1c9(8)還可以為真。所以兩種情況之下,r1c9(8)和r7c4(8)至少一個為真。故刪除兩個候選數共同對應的位置,即r7c9(8)。
鏈文本表示如下:
(r1c9=r1c5-r3c4=r7c4)(8) => r7c9<>4
這個結構稱為雙線風箏(Two-string Kite)。
Part 4 多寶魚(Turbot Fish)
如圖所示,假設r3c4(8)假,可以得到r9c7(8)為真,所以r3c4(8)和r9c7(8)至少一個為真,故刪除交集。
(r3c4=r7c4-r7c9=r9c7)(8) => r3c7<>8
這個結構稱為多寶魚(Turbot Fish)。
哈,這個英文我好像哪裡見到過。對,在上面第一次出現的「雙強鏈」一詞,英文名寫的就是這個。對沒錯,雙強鏈和多寶魚其實是同一個東西,而剛才的摩天樓和雙線風箏,也都是屬於其中的,不過被單獨列出來的原因是,結構長相更為特殊。
根據技巧的發現者描述呢,摩天樓的兩個強關係是產生於同兩行或兩列的,而雙線風箏的兩個強關係則產生於某行和某列。如果不滿足上述兩個要求的,就是普通的雙強鏈,或者叫多寶魚結構。換句話說,摩天樓的強關係是「平行」的,而雙線風箏的強關係則是「垂直」的,而強關係既不平行也不垂直,只能算是普通的雙強鏈(多寶魚)結構。
Part 5 共軛對和強關係的異同
根據之前的理論,我們發現到一點神奇的地方,共軛對和強關係好像是同一個東西嘛。共軛對就產生於同一個區域下,只有兩個位置可填的情況,而這樣的定義,恰好完全滿足強關係的定義。
實際上,強關係的定義比共軛對更寬泛一些,共軛對指的是同區域下只有兩個位置可填的相同數字,或是同一雙值格下的兩個候選數。但跨區域下的不同數字,共軛對並不包括在內,而強關係在之後,我會告訴大家如何去尋找和使用這樣的特別情況。所以你只需要記住一點,因為目前的強關係的定義可以完全用共軛對實現,所以我們就用共軛對來尋找吧!共軛對找起來會很快的哦!
Part 6 總結
這一節是針對講到的技巧做的一個統一的難度歸納和理論分析。
- 摩天樓
- 英文名:Skyscraper
- 難度係數:SER 6.6,XR 4.05
- 命名空間:
Tech.Chain.AIC.SingleDigit.Turbot.Skyscraper
- 雙線風箏
- 英文名:Two-string Kite
- 難度係數:SER 6.6,XR 4.1
- 命名空間:
Tech.Chain.AIC.SingleDigit.Turbot.TwoStringKite
- 多寶魚(普通)
- 英文名:Turbot Fish
- 難度係數:SER 6.6,XR 4.2
- 命名空間:
Tech.Chain.AIC.SingleDigit.Turbot.Basic
使用到的術語:
- 真
- 英文名:True
- 解釋:某一個候選數直接填入到盤面之中的情況,即用等號
=
表示的情況。 - 假
- 英文名:False
- 解釋:指的是某一個候選數從盤面之中消失的情況,即用不等號
!=
或<>
表示的情況。 - 強關係
- 英文名:Strong Inference
- 解釋:如果某一候選數為假,則得到另外一個候選數為真的,則稱這兩個候選數有強關係。
- 弱關係
- 英文名:Weak Inference
- 解釋:如果某一候選數為真,則得到另外一個候選數為假的,則稱為兩個候選數有弱關係。
- 節點
- 英文名:Node
- 解釋:結構的每一個真假討論的點。
- 鏈頭
- 英文名:Head
- 解釋:指的是鏈結構在推導過程之中的第一個節點。也稱為鏈首。
- 鏈首
- 英文名:Head
- 解釋:指的是鏈結構在推導過程之中的第一個節點。也稱為鏈頭。
- 鏈末
- 英文名:Bottom
- 解釋:指的是鏈結構在推導過程之中的最後一個節點。也稱為鏈尾。
- 鏈尾
- 英文名:Bottom
- 解釋:指的是鏈結構在推導過程之中的最後一個節點。也稱為鏈末。
- 交集
- 英文名:Intersection in Chain
- 解釋:指的是鏈頭和鏈尾共同對應的地方(或者說,都可以看得到的地方)。也稱為共同作用域。
- 共同作用域
- 英文名:Intersection in Chain
- 解釋:指的是鏈頭和鏈尾共同對應的地方(或者說,都可以看得到的地方)。也稱為交集。
- 雙位區
- 英文名:Bilocation Region
- 解釋:指的是同一區域下只有兩處可填某一候選數的位置,所在的區域。
推薦閱讀:
※第22講:不規則Wing結構
※第21講:同數鏈和異數鏈常見構型
※第23講:守護者
TAG:數獨 |