標籤:

第28講:毛刺數組

今天介紹一種新的超鏈結構,之前的超鏈嵌入了nALS和hALS,而它的介紹和定義很類似於數組,但用途卻比數組奇怪得多。今天來看看,如果超鏈嵌入了「正常的」數組,又會是怎麼樣的情況。

Part 1 顯性毛刺數組(Almost Naked Subset)

如圖所示,鏈如下表示:

r7c6(7)=r8c6(7-1)=r9c5(1)-r9c1(1)=r9c13(37) => r7c1<>7

按照最開始的邏輯,設r7c6(7)為假,則得到r8c6(7)真、r8c6(1)假、r9c5(1)真、r9c1(1)假。而此時發現,r9c1(1)假之後,r9c13形成了37顯性數對。

換句話說,r7c6(7)有兩種填數情況,其為假時,得到r9c13(37)顯性數對結構,換句話說,r9c13(37)顯性數對在此時是為真的(結構成立就為真,結構不成立時為假)。所以r7c6(7)和r9c13(37)之中至少有一個為真,於是刪除掉它們的交集。那,一個顯性數對和一個候選數怎麼找交集呢?

  • r7c6(7)為真的時候,可以刪掉的是r7c6所在區域下所有的單元格(相關格)內的候選數7;
  • r9c13(37)為真的時候,可以刪掉的是b7和r9內其餘單元格的候選數3和7。

所以對於此題來說,它們的交集,只有r7c1(7)了,所以r7c1<>7。

這個結構是不是很神奇?你會發現,在末端嵌入了一個顯性數對,but前提是r9c1(1)為假時,才成立。所以,我們直接稱r9c13兩格叫顯性毛刺數對(Almost Naked Pair),毛刺(Kraken)一詞用來表示結構多出來了一點點東西,並使之為假時,結構才真正成立。

另外,為啥毛刺的英文不是Almost而是Kraken呢?Almost和Kraken兩個詞語有一些細微的區別。Almost強調結構本身,而Kraken表示的是使用了Almost結構的技巧。比如這個示例,因為這個鏈之中使用了顯性毛刺數對(Almost Naked Pair),所以這個技巧的名字叫顯性毛刺數對鏈(Kraken Naked Pair)或超鏈置顯性數對(Hyper AIC With Naked Pair)。

什麼?區分不了?就叫鏈就行(滑稽.gif)

Part 2 隱性毛刺數組(Almost Hidden Subset)

如圖所示。鏈如下所示:

r46c1(3)=r7c1(3-6)=r7c3(6-8)=r45c3(78) => r45c3<>3

如果r46c1(3)區塊為假時,r7c1(3)為真(之前也提到過這一點,區塊和候選數的強關係怎麼推導)。於是,r7c1(6)假、r7c3(6)真、r7c3(8)假。觀察c3,我們可以發現,r7c3(8)為假時,c3剛好產生78隱性數對,在r45c3。換句話說,當r7c3(8)為假時,r45c3(78)隱性數對為真。於是,也就得到了r46c1(3)區塊和r45c3(78)隱性數對至少一個為真。

  • r46c1(3)區塊可以刪除的是c1和b4內的其餘位置的候選數3;
  • r45c3(78)隱性數對可以刪除的是r45c3內其餘的候選數。

所以,它們的交集,應該是r45c3(3)。所以r45c3<>3。

那麼,類比於剛才的顯性毛刺數組,隱性毛刺數組(Almost Hidden Subset)指的是差一點形成隱性數組的情況,比如例子之中的r457c3(78)(別忘了r7c3也有候選數7哦)。同理,這個技巧稱為隱性毛刺數組鏈(Kraken Hidden Subset)或超鏈置隱性數組(Hyper AIC With Hidden Subset)。

哦對了,數組可不只是只能在鏈的頭尾哦,比如下面這個例子,毛刺數組就被嵌入到了鏈的中間。

鏈如下表示:

r5c8(7)=r5c2(7)-r4c1(7)=r89c1(27)-r8c1(5)=r8c4(5)-r7c5(5)=r5c5(5) => r5c8<>5

設定r5c8(7)為假時,r5c2(7)真、r4c1(7)假。此時,c1之中形成27隱性數對,位於r89c1。那麼,理所應當地,隱性數對可以刪除掉r89c1的其餘候選數,因此r89c1的其餘候選數都應該和r89c1(27)隱性數對形成弱關係。那麼,r89c1(27)和r8c1(5)肯定就是弱關係了。

最終,我們得到了r5c5(5)為真。於是根據不連續環,就可以刪除掉r5c8(5)了。

Part 3 毛刺數組節點的真假討論

有小夥伴覺得,鏈可以逆向推導嘛,可把鏈倒過來之後,「數組為假」是怎麼回事?數組為假,意味著無法形成數組結構。那麼,怎麼樣才能使得無法形成數組結構呢?數組涉及的單元格內有至少有一格是和數組無關的數就可以使得數組為假。數組結構恰好有n格填n種數字,沒有其他的數字。那麼,至少有一格填入其他無關的候選數就意味著可以破壞數組結構了。那麼,拿出一個示例,我們倒著看這條鏈,看可不可行。

雖然還是剛才的示例,這次我們倒著看,即先設定37顯性毛刺數對為假。

設r9c13(37)數對為假,意味著r9c13至少一格是和3和7無關的數。我們發現,r9c13也只有r9c1有無關的數字(r9c1(1)就是無關的數字),所以破壞結構,只能使得r9c1(1)真,故r9c13(37)假時,r9c1(1)為真。

另外一例,是隱性毛刺數組。

倒著看這條鏈,並設r45c3(78)為假。為了破壞這個隱性數對成立,只能使得c3內其餘的單元格下,7和8至少有一格是為真的,這個題裡面c3內只有r7c3(8)唯一一個可以破壞數對結構,所以當r45c3(78)假時,必須得到r7c3(8)為真。

Part 4 總結

這一節是針對講到的技巧做的一個統一的難度歸納和理論分析。

  • 超鏈置顯性數組
    • 英文名:Hyper AIC With Naked Subset
  • 超鏈置隱性數組
    • 英文名:Hyper AIC With Hidden Subset

使用到的術語:

  • 毛刺
    • 英文名:Kraken
    • 解釋:結構多出來了一點點東西,並使之為假時,結構才真正成立。
  • 待定
    • 英文名:Almost
    • 解釋:差一點形成固定技巧結構的結構。

推薦閱讀:

第22講:不規則Wing結構
第8講:標準魚的觀察
第18講:偽數組和跨區數組
第20講:雙強鏈(多寶魚)

TAG:數獨 |