標籤:

第26講:ALS的一般拓展結構

今天我們繼續來看關於ALS的技巧。

Part 1 ALS-雙值格鏈(ALS-XY-Chain)

如圖所示,鏈表示如下:

r1c8(1)=(r47c8-r9c8)(5)=(r9c458-r9c2)(9)=(r7c1-r2c1)(8)=r2c6(1) => r1c46, r2c7<>1

這個鏈內一共有四個ALS,分別是r1347c8、r9c34568、{r7c1, r9c2}和r2c126。分析方式和之前的ALS-XY-Wing等結構相同,這裡就不再重複。強關係依然採用「不可同時為假」進行分析。

Part 2 ALS強關係的拓展

當然了,今天講的重點肯定不是那麼簡單的哦!

如圖所示。鏈的寫法如下:

r1c4789(69)=r1c4(5)-r8c4(5=6)-r8c3(6)=(r58c3-r3c3)(2)={r2c123, r3c3}(69) => r1c12<>69, r2c7<>9

注意到鏈的開頭,寫的是r1c4789(69)=r1c4(5),這是什麼情況?還能兩個數和一個數成強關係?想一下之前說的東西。只要不可同假,就可以成強關係。那麼仔細想一想,r1c4789(69)和r1c4(5)可否同假?之前在區塊組鏈裡面,就講到一個內容:一個區塊和一個候選數成強關係,是如何進行推導的。當然了,當時還沒有講到第二定義,所以使用的是原定的邏輯。如果試想一下,區塊和候選數成強關係,那麼這個區塊和候選數就不應同時為假。

顯然,區塊為假表示不構成區塊結構,就可能是區塊組裡面有0個數為真,或者多於2個數為真。當然了,區塊組是位於同區域內的結構,所以區塊組結構內肯定不可能多於2個數為真。那麼,類比於區塊組來看看這個r1c4789(69)和r1c4(5)呢。

r1c4789(69)為假,意味著不構成r1c4789(69)的結構。r1c4789(69)在此處想表示的意思是,r1c4789之中,有一格是6、有一格是9,這即為r1c4789(69)為真的情況。那如果為假,就是它的對立情況,即沒有單元格是6,也沒有單元格是9(更多單元格是6和9的情況可以直接排除掉,因為這明顯不可能,因為同一區域內不可能出現多個相同數字)。

感覺這裡不嚴謹?你可以這麼想:把r1c4789(69)拆開成r1c4789(6)和r1c789(9)兩部分來看。

首先,r1c4789(6)=r1c4(5)成立,因為同假指的是r1c4789(6)和r1c4(5)均為假。r1c4789(6)為假指的是r1c4789之中有0個或至少2個單元格是6(r1c4789(6)為真指的是r1c4789之中有且僅有1個單元格是6)。「至少2個單元格是6」顯然不成立,所以只能有0個單元格是6,而算上r1c4(5)為假,就指的是r1c4789都不能是6,且r1c4也不是5。這樣的話,ALS內就只剩下2、4、9三種候選數了,要填入到四格之中,這明顯是不成立的。所以這樣的強關係成立。

同理,r1c789(9)=r1c4(5)也成立,因為同假指的是r1c789(9)為假且r1c4(5)也為假。r1c789(9)為假指的是r1c789都不能是9(至少兩格是9的情況這裡就不用再說了)。顯然,都不能是9和5後,ALS區域下同時少了5和9兩種數字,只剩下2、4、6三種數字,要填入到四格之中是顯然不夠的,所以強關係是成立的。

所以,直接把r1c4789(6)和r1c789(9)寫在一起,簡化寫法。同理,末端的強關係也是這麼產生的,可以將其拆分成6和9兩個部分來看。

最終,刪數怎麼找呢?剛才我們採用了拆分的方式,把r1c4789(69)和{r2c123, r3c3}(69)拆分成6和9的兩個部分。所以鏈就可以分成這樣兩個情況:

r1c4789(6)=r1c4(5)-r8c4(5=6)-r8c3(6)=(r58c3-r3c3)(2)={r2c123, r3c3}(6) => r1c12<>6r1c4789(9)=r1c4(5)-r8c4(5=6)-r8c3(6)=(r58c3-r3c3)(2)={r2c123, r3c3}(9) => r1c12, r2c7<>9

這樣就一目了然了。

思考一個問題。ALS內的強關係,一共有哪些情況呢?

  1. ALS內兩種候選數之間,所有的候選數a和所有的候選數b為強關係;
  2. ALS內多種候選數之間,任意以候選數種類為單位,任意分成兩個部分,兩個部分成強關係。

Part 3 ALS-首尾格內對匹配法(ALS-W-Wing)

如圖所示,鏈如下所示:

r7c23(8=1)-(r7c7=r3c7-r3c1)(1)=r35c1(8) => r7c1<>8

這個鏈內一共有兩個ALS,並且位於首尾。所以利用剛才的結論,我們可以知道,r7c23(8)和r7c23(1)是強關係。同時為假的時候,r7c23內只有3這一種候選數可填,這顯然不成立。結尾的強關係也是一樣。

這個結構的寫法非常類似於首尾格內對匹配法(W-Wing)的結構:(w=x)-x=x-(x=w),所以被稱為ALS版本的W-Wing,即ALS-首尾格內對匹配法(ALS-W-Wing)。

Part 4 死亡綻放(Death Blossom)

接下來講一個跟規則Wing結構(分支匹配法)很類似的ALS版本。

如圖所示。

之前的規則Wing結構採用了分情況討論的思想,這裡也來使用這一思想吧!

我們觀察r2c6。

  • 當r2c6=4時,r2c1(4)為假,此時觀察{r1c2, r23c12}這個ALS區域。我們可以找到一個強關係:r2c1(4)=r3c2(3),所以也意味著r3c2(3)為真。
  • 當r2c6=6時,r5c6(6)為假,此時觀察r5c356這個ALS區域。我們可以找到一個強關係:r5c6(6)=r5c3(3),所以也意味著r5c3(3)為真。
  • 當r2c6=9時,r3c6(9)為假,此時觀察r3c126這個ALS區域。我們可以找到一個強關係:r3c6(9)=r3c2(3),所以也意味著r3c2(3)為真。

觀察三種情況,最終我們發現,r3c2(3)和r5c3(3)至少有一個是正確的。所以,刪除掉r3c2(3)和r5c3(3)的交集,故r3c3, r5c2<>3。

這個結構稱為ALS版本的規則Wing結構,當然了,你想叫它ALS-XYZ-Wing啊,當然可以啦,如果有四個分支,你還可以叫ALS-WXYZ-Wing呢!但是捏,我這裡有五個分支的哦!如下圖所示。

嘛,我就直接用Hodoku軟體生成圖片啦(圖中的ALS區域用不同顏色的粗線框描出來要好久的時間呢,索性就不畫了-_-||)。五個分支應該叫什麼呢?ALS-VWXYZ-Wing!倒是現在還沒找到過六個分支的結構呢!

不過呢,它還有一個夢幻的名字:死亡綻放(Death Blossom),就跟最開始知道的Full House(滿漢全席)那種樣子!

Part 5 ALS的觀察及一般ALS超鏈

接下來講一下ALS的觀察。


ormalsize 	ext{5-1 ALS的觀察}

ALS滿足兩點特徵,你忘記了沒有呀:

  1. ALS涉及同區域下的最多八個單元格;
  2. ALS涉及的n個單元格內有(n+1)種不同的候選數。

我們可以依據這一點來數。按區域為單位,隨意觀察同一區域下的若干個單元格,憑自己的感覺去看候選數種類。比如說你可以看到兩個單元格都只有候選數2和8,這顯然就不行。隨意選出這樣的多個單元格,只要滿足上述要求,就可以叫做ALS。

然後,找尋與其有關聯的另外一個區域下的ALS。什麼意思呢?比如找尋的第一個ALS是產生於某一行之中的,那麼找第二個ALS時,最好尋找和第一個ALS有關聯的(用RCC,即構成弱關係來搭建「橋樑」,有這樣的弱關係的,就叫有關聯了),然後找尋的是另外區域下的ALS。

有一點經驗是,找尋的ALS結構,最好有其中兩種數字,只有唯一的一個在這個ALS區域下存在。換句話說,就是在這個ALS結構下,最好有兩種數字,都只有一處位置可填,這樣方便尋找強關係,也方便觀察使用起來。

接下來來帶著大家看一下一些基本的結構。


ormalsize 	ext{5-2 超鏈置ALS(Hyper AIC With ALS)}

如圖所示,這個鏈的寫法如下:

r3c6(7)=r2c6(7-8)=r8c6(8)-r8c1(8)=r5c1(6)-r5c9(6)=r23c9(7) => r3c8<>7

比如在r2358c1這個ALS區域下,有6、8這兩種候選數,在這個ALS區域內,都是只有一個位置可以填的,這樣就便於我們去尋找和利用6和8的強關係。

另外,這個結構就是普通的ALS超鏈,或叫超鏈置ALS(Hyper Chain With ALS)。

然後,再看兩則特別的示例。


ormalsize 	ext{5-3 節點重疊(Overlap Truths)}

這個示例有些奇葩,鏈如下所示:

r3c13(7)=r3c9(7-2)=(r6c9-r6c2)(2)=(r6c23-r46c1=r23c1)(7) => r1c3, r2c2<>7

這個鏈頭和鏈尾都是7的區塊組:r3c13(7)和r23c1(7)。不過有些特殊的是,r3c1(7)被兩個區塊組共用。不過,刪數也是存在的。因為r3c13(7)和r23c1(7)至少一個為真,意味著這三個單元格的候選數7,至少都有一個位置是為真的(r3c1(7)為真,就是這個特殊情況)。刪掉交集,也就是b1的其餘位置的7啦。

之前說到過,節點不一定只是候選數,也可以是區塊,所以這裡的鏈頭和鏈尾就是兩個區塊了,它們有部分重疊,所以稱為節點重疊(Overlap Truths)現象,當然了,數獨圈也經常俗稱「區塊撞車」。

當然了,節點重疊並不一定是區塊和區塊之間,也可能是ALS內部產生的部分之間的重疊。比如這個例子:

r48c8(7)=(r8c8-r8c5=r6c5-r6c9)(8)=r4c8(7) => r12c8<>7

其中,r48c8(7)=r8c8(8)是產生於r48c8內的ALS,而r6c9(8)=r4c8(7)則是產生於{r4c8, r6c9}的ALS。

這個結構就比起剛才的難觀察一些了。

Part 6 總結

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

  • ALS-雙值格鏈
    • 英文名:ALS-XY-Chain
    • 難度係數:無
    • 命名空間:Tech.AlmostSubset.ALS.Chain.Multiple
  • ALS-首尾格內對匹配法
    • 英文名:ALS-W-Wing
    • 難度係數:SER 無,XR 7.8
    • 命名空間:Tech.AlmostSubset.ALS.Chain.W
  • 死亡綻放
    • 英文名:Death Blossom
    • 難度係數:SER 無,XR 8.3
    • 命名空間:Tech.AlmostSubset.ALS.RegularWing
  • 超鏈置ALS
    • 英文名:Hyper AIC With ALS
  • 節點重疊
    • 英文名:Overlap Truths

推薦閱讀:

第27講:隱性ALS
第3講:區塊組
第6講:數組的觀察和互補
第33講:標準環的基本理解
第18講:偽數組和跨區數組

TAG:數獨 |