標籤:

第25講:ALS初步

今天要講的東西呢,才是AIC話題裡面的重頭戲,而它也是最基礎的AIC的拓展內容之一。那麼它是什麼呢?它被稱為待定死鎖集合(Almost Locked Set),簡稱為ALS。這個說法估計你認識和看到過吧!來看看這個玩意兒怎麼用吧!

本節內容篇幅較長,而且需要認識和理解的東西相當多,希望你能夠邊看、邊思考原因。

Part 1 ALS的引入

如圖所示,我們先來看下這個鏈的寫法。鏈的寫法如下:

r3c7(1)=r1c9(4)-r5c9(4)=r5c8(1) => r1c8, r5c7<>1

按照原定的邏輯,r3c7(1)為假,則r1c9(4)為真。那憑啥r3c7(1)為假,這個r1c9(4)就得為真呢?

試想一下,如果r3c7(1)為假,而且r1c9(4)也是為假的,會怎麼樣?觀察b3內所有塗藍紫色的單元格(r1c9、r2c89和r3c79),在沒有去掉r3c7(1)和r1c9(4)時,這五格內一共有六種候選數1、4、6、7、8、9。這意味著,五個單元格可以在六種不同的候選數中選擇其中五種填入,那麼顯然有一種候選數是多餘的。多餘倒是無所謂,但如果r3c7(1)和r1c9(4)都沒了的話,再看這幾個單元格,候選數就直接少了其中兩種(1和4),只剩下四種。

試想一下,四種候選數能否填入到五格之中?當然不可以,這完全不夠嘛,五格肯定要填五種不同的數字才夠嘛,才四種很明顯不行。所以這樣是錯誤的。也就是說,r3c7(1)為假時,假設r1c9(4)也為假,是會有錯誤的。所以此時r1c9(4)應為真。

這就有些奇怪了。我們平時在推導強弱關係時,只用到過同區域下的同數強弱關係,或是同一單元格內的異數強弱關係,這裡卻來一個同區域下的異數強關係,而且邏輯也沒有毛病。

先不管那麼多,我們繼續。得到r1c9(4)為真時,r5c9(4)理所應當為假,畢竟同列嘛。然後,r5c9(4)為假時,r5c8(1)就得為真。邏輯和剛才的類似:觀察b6,塗色的單元格有兩個:r5c89,內部一共是有三種候選數1、4、6的。如果r5c9(4)為假時,此時r5c8(1)還是為假,這三個單元格內就會少掉兩種候選數,最終只剩下1這一種候選數。一種候選填兩格肯定不行,這必然會矛盾。所以當r5c9(4)為假時,r5c8(1)就應當為真。

所以,算是胡亂地找到了邏輯,最終得到了r3c7(1)為假時,r5c8(1)為真的結論。那麼,根據AIC的原始邏輯,r3c7(1)還有一種為真的填數情況,這使得r3c7(1)和r5c8(1)至少有一個為真。於是刪除掉兩個候選數共同對應的位置(也就是交集),即r1c8(1)和r5c7(1)。

這個結構就講完了。它的長度為3,跟雙強鏈有些類似,但和雙強鏈完全不同的是,雙強鏈不論是強關係還是弱關係,產生的情況都是「同數、同區域」,而這裡卻是「異數、同區域」。這個結構感覺形式上有些異樣,還借用了b3和b6內的多個單元格才得到的強弱關係。

而這些,都是一個特殊結構的特性,它就是待定死鎖集合(Almost Locked Set),一般不說中文名,都簡稱ALS。

ALS的基本形式有非常之多,這裡是它的第一種情況。這種情況有以下兩點特徵:

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

比如上圖ALS-XZ結構裡面,b4內塗色的五格就是一組ALS,而b6內塗色的兩格,也自成一組ALS。

於是,我們藉助到了這兩點,得到了一種同區異數強關係。那麼,今天我們就解鎖了新的一種關係使用。

small egin{array}{l|l|l} 	ext{種類編號} & 	ext{類型} & 	ext{首次出現的地方}\ 	ext{No.} & 	ext{Kind} & 	ext{First Show}\ hline 	ext{1} & 	ext{同區域同數強關係} & 	ext{雙強鏈(多寶魚)}\ 	ext{2} & 	ext{同區域同數弱關係} & 	ext{雙強鏈(多寶魚)}\ 	ext{3} & 	ext{同單元格異數強關係} & 	ext{異數鏈}\ 	ext{4} & 	ext{同單元格異數弱關係} & 	ext{異數鏈}\ 	ext{5} & 	ext{同區域異數強關係} & color{red}{	ext{ALS}}\ 	ext{6} & 	ext{同區域異數弱關係} & 	ext{???}\ 	ext{7} & 	ext{跨區域同數強關係} & 	ext{???}\ 	ext{8} & 	ext{跨區域同數弱關係} & 	ext{???}\ 	ext{9} & 	ext{跨區域異數強關係} & 	ext{???}\ 	ext{10} & 	ext{跨區域異數弱關係} & 	ext{???}\ end{array}

TeX代碼如下:smallegin{array}{l|l|l} ext{種類編號} & ext{類型} & ext{首次出現的地方}\ ext{No.} & ext{Kind} & ext{First Show}\hline ext{1} & ext{同區域同數強關係} & ext{雙強鏈(多寶魚)}\ ext{2} & ext{同區域同數弱關係} & ext{雙強鏈(多寶魚)}\ ext{3} & ext{同單元格異數強關係} & ext{異數鏈}\ ext{4} & ext{同單元格異數弱關係} & ext{異數鏈}\ ext{5} & ext{同區域異數強關係} & color{red}{ ext{ALS}}\ ext{6} & ext{同區域異數弱關係} & ext{???}\ ext{7} & ext{跨區域同數強關係} & ext{???}\ ext{8} & ext{跨區域同數弱關係} & ext{???}\ ext{9} & ext{跨區域異數強關係} & ext{???}\ ext{10} & ext{跨區域異數弱關係} & ext{???}\end{array}

那麼,上面的結構是ALS版本的雙強鏈了,所以也被稱為ALS-雙強鏈法則(ALS-XZ Rule)。

英文名裡面的「XZ Rule」(XZ法則),的x和z也都是其中的未知數,同雙分支匹配法(XY-Wing)之中的z,是指結構內唯一跨區的候選數,這裡的z指的是結構兩頭的數,而x則指的是結構的「橋樑」(數字4)。書寫名稱時,作標題時才大寫,一般情況寫作ALS-xz(ALS是簡寫詞,應當在任何時候大寫)。Rule一詞可以被省略。

另外,還有些地方把ALS-XZ稱為雙強顯性待定數組鏈

接著,我們稱,嵌入結構的AIC為超標準鏈(Hyper AIC),一般簡稱超鏈。比如ALS-XZ就是嵌入了ALS的超鏈。或者換句話說,超鏈指的是內部產生的強弱關係包含剛才表上後面六種情況(同區異數強弱關係、跨區同/異數的強弱關係)其一的AIC結構

另外,我們一般記帶有ALS結構的超鏈為超鏈置ALS超鏈+ALS(Hyper AIC With ALS),或ALS超鏈

那麼,ALS就這麼簡單嗎?當然不是,因為,這一點就幫助我們引入了關係第二定義。

Part 2 關係第二定義和鏈的雙向性

關係?不就是強弱嘛。一起來背一下強弱關係的定義:

  • 強關係:如果某一個候選數為假,能得到另外一個候選數為真的,則稱兩個候選數有強關係;
  • 弱關係:如果某一個候選數為真,能得到另外一個候選數為假的,則稱兩個候選數有弱關係。

陸仁賈同學對於這個地方有兩個疑問。

陸仁賈:老師我有兩個問題。

我:你怎麼又來了???既然你誠心誠意地問了,那我就大發慈悲地告訴你,問吧問吧。

陸仁賈:(汗-_-||)老師,我不是火箭隊。咳咳咳,言歸正傳。我想問的問題1是,我感覺定義上有點小毛病,為什麼說「若前者假,則後者真」就可以直接說成「兩個候選數有強關係」了呢?難道不應該是「若前者假,則後者真」應該只能得到的是「前者到後者有強關係」嗎?直接說成「兩數有強關係」,好像還差一個方向吧,也就是反方向的推導。弱關係也是,沒有反向說明這一點。

我:問題提得很好,那你另外一個問題呢?

陸仁賈:問題2是,弱關係這個定義實在是感覺多餘了,如果只是為了配合強關係產生一個「定義對稱」的另一個定義的話,那我感覺沒有意義啊,因為我們平時假設過程之中,隨隨便便就可以假設其中一個數為真,另外一個就肯定為假的嘛。再說了,這個弱關係顯然也不和強關係的定義對稱啊。你想嘛,就拿之前的所有例子來說,只要是同區域、同數,或是同一個單元格內,任何兩個數都直接滿足弱關係定義,但是強關係卻不一定,換句話說,之前所有的示例,只要滿足強關係的地方,好像全部都滿足弱關係的定義誒。雖然老師之前已經告訴我,強關係定義雖然滿足弱關係定義,但依然是該使用強關係時使用強關係,該使用弱關係時使用弱關係,因為要保證鏈的推導形式。

我:同學啊,你很有心機啊,哦不對,你很有想法啊。那我就來帶你看看這其中的原因。

聰明的你,要不先自己想想看?如果實在是想不通的話,可以來看看下面的證明思路和原因哦。注意的是,這兩個問題的解釋和證明都很重要,希望你能掌握這一點的證明方式,不論你學習理論還是做題情況之下。

先來看看問題1,把剛才的對話簡化一下,他想問的問題其實是「強弱關係在沒有說明反向的情況下,就直接定義為『兩數有強關係』或是『兩數有弱關係』了,這樣做是否不嚴謹」。

我們抽象一下,強弱關係的定義。

  • 強關係:針對於兩個候選數a和b來說,如果a假,則b真的,則稱a和b有強關係。
  • 弱關係:針對於兩個候選數a和b來說,如果a真,則b假的,則稱a和b有弱關係。

沒毛病!這麼抽象一波是為了好描述其中的a和b一些。接下來,我們挨個來看。先看強關係。

先把強關係裡面的命題部分抽出來留著待會兒用:

如果a為假,則b為真。

接下來,回憶一下你在高一學習到的數學知識點:命題與邏輯(當然了,有些小夥伴也有可能是在高二才學到的)。

當時命題與邏輯那一章裡面,我們學到了四種特別的命題,以及它們之間的關係。如下圖所示。

四大命題關係(圖片由ProcessOn網站在線製作)

對吧,很熟悉吧。我們知道的是,原命題和逆否命題一組,逆命題和否命題一組,同為一組的兩個命題由於互為逆否,所以真值相同。高中是這麼說的吧!

接下來我們來思考一下。剛才的命題看成原命題好了:

如果a為假,則b為真。

那麼它的逆否命題如何呢?

  • 原命題:如果a為假,則b為真。
  • 逆命題:如果b為真,則a為假。
  • 否命題:如果a為真,則b為假。
  • 逆否命題:如果b為假,則a為真。

是吧。那你再對比一下原命題和逆否命題呢?原命題和逆否命題真值相等,說白了就是,如果原命題是對的,那逆否命題也就應該是對的。但是恰好,這個逆否命題就是原命題經過反向變化得到的。原命題說明了「a到b有強關係」,那逆否命題說明了「b到a有強關係」,那a和b兩個方向都有強關係了,那肯定a和b就直接有強關係了唄,這樣就不用管方向了,而且通用情況下都是,只要有原命題(其中一個方向的強關係),就一定會產生它的逆否命題(另外一個方向的強關係),所以無需證明兩個方向都是強關係,才叫「兩數有強關係」。

另外,弱關係也可以證明。

  • 原命題:如果a為真,則b為假。
  • 逆命題:如果b為假,則a為真。
  • 否命題:如果a為假,則b為真。
  • 逆否命題:如果b為真,則a為假。

同樣只是換了一個方向罷了。

所以,強關係弱關係都可以論證得到這一點,而鏈就是由強弱關係交替得到的,所以,鏈是雙向的,或者說鏈是不論方向的。所以回答第一個題,就應該是「定義是嚴謹的,沒有錯,而證明方式使用了逆否命題的邏輯」。

再來看看問題2,他想問的則是「弱關係的定義是否真的沒有用途」。

實際上並不是。這一點的論證,需要引入一個新的東西:強弱關係第二定義。

什麼?!還有第二定義?其實,兩個說法的等效的,but,你需要把兩種定義形式都記下來,因為不同場合下使用不同的定義形式做題速度有區別,邏輯和分析程度上也有區別。先來看一下怎麼推導的吧!

首先,依然要藉助逆否命題幫忙。我們還是先用強關係舉例進行描述。

  • 原命題:如果a為假,則b為真。
  • 逆否命題:如果b為假,則a為真。

我就去掉了逆命題和否命題了哈,暫時用不到它們。對比兩種說法,最終能夠發現到一點的是,a和b不管是正向還是反向,至少都有一個數是為真的。什麼,你不信?你看看這兩個命題「如果……則……」的「則……」這一部分。首先,是不是要滿足強關係就必然要滿足這兩個命題呀?那既然都滿足這兩個命題了,那a和b確實至少有一個都應得到為真才行。

所以,換一句話說,如果「a和b不可同時為假」或是「a和b至少有一個為真」,就算是強關係了。

同理,弱關係也是差不多的類似看法:

  • 原命題:如果a為真,則b為假。
  • 逆否命題:如果b為真,則a為假。

刪掉逆命題和否命題,我們發現,a和b是至少有一個數為假的。所以,換一句話說,如果「a和b不可同時為真」或是「a和b至少有一個為假」,就算是弱關係了。

這樣,就得到了強弱關係的第二定義。那麼,我們先來總結一下強弱關係第二定義(為了閱讀方便,我順便把強弱關係原始的定義也寫在這裡):

關係第一定義

  • 強關係:針對於候選數a和b而言,如果a為假,則b為真的,則稱a和b有強關係;
  • 弱關係:針對於候選數a和b而言,如果a為真,則b為假的,則稱a和b有弱關係。

關係第二定義

  • 強關係:針對於候選數a和b而言,如果a和b不可同時為假的,則稱a和b有強關係;
  • 弱關係:針對於候選數a和b而言,如果a和b不可同時為真的,則稱a和b有弱關係。

那麼,回到最開始的問題上去。這樣去定義弱關係真的有意義嗎?感覺好像是包含關係而不是對稱的關係。其實不然。仔細看看第二定義。比如強關係第二定義,「a和b不可同假」稱為強關係,那有一種可能,就是a和b同真時,也叫「不可同假」哦。這似乎原始定義沒有提到這一點,其實呢,它是在隱藏信息裡面的。如果a和b同真,那麼意味著這個b一定是對的,管它a是否為真,只要邏輯沒毛病,b就一定能得到為真的情況。也就是說,它肯定有法通過原始的定義得到「a和b是強關係」的結果。弱關係的「同時為假」的情況也是類似的理解方式。

試想一下,如果按照原始的定義來看這一點,比如強關係的「如果a假,則b真」。這句話是很難一眼看出a和b是可以同真的這樣一種特殊情況的。弱關係原始定義上也是一樣。那麼,弱關係裡面,就很難想到會「漏掉」這一點情況。

所以,弱關係並不是什麼情況下都成立的,這個定義只是相較於強關係來說,用的較少罷了。

如果覺得還是沒有說清楚的小夥伴,可以在下方留言提問哦!

Part 3 ALS-XZ的雙RCC拓展

在ALS-XZ結構內,有一個定義要提一下——嚴格共享候選數(Restricted Common Candidate),簡稱RCC。

RCC具有什麼樣的特徵呢?因為它是作為ALS-XZ的橋樑(弱關係),而且是同數同區域下的弱關係,那麼,這意味著兩數不可同真。也就是說,兩數可以同假,也可以有且僅有一個為真。比如ALS-XZ例題之中的r14c9(4)就是一個RCC。

現在要講的結構呢,也是目前數獨技巧範圍裡面,名字最長的技巧。而且用邏輯寫出來,也是一長篇呢!

如圖所示,我們把r2c239看作一組ALS(三個單元格,有2、4、7、9四種候選數),r4c23看作一組ALS(兩個單元格,有1、2、4三種候選數)。這個鏈的寫法如下:

r2c2(2)=r2c3(4)-r4c3(4)=r4c2(2)

或是這樣

r2c3(4)=r2c2(2)-r4c2(2)=r4c3(4)

這個結構可以寫成兩個不同的鏈結構。也就是說,這個結構自帶了2和4兩個RCC。根據原定的ALS-XZ邏輯,那麼可以刪除掉的是c2內其餘單元格的候選數2,以及c3內其餘單元格的候選數4。那這題為啥標註了那麼多紅色的刪數?

回想一下RCC的特徵:RCC呈弱關係,意味著兩數不可同真。不可同真本應該指的是「同假」或「有且僅有一個為真」,但是當我們刪除掉c2內其餘單元格的候選數2和c3的其餘單元格的候選數4之後,RCC就不可能再同假了。因為刪掉這些數之後,c2其餘位置就不再存在填入2的地方,c3的其餘位置也就不存在填入4的地方,此時RCC變為共軛對。

共軛對即一真一假,比如圖中r24c2(2)這個共軛對,只能是一真一假,r24c3(4)也是一樣的情況。首先,我們根據上面描述出來的兩條超鏈,可以看到兩個強關係:

  • r2c2(2)=r2c3(4)
  • r4c2(2)=r4c3(4)

這意味著r2c2(2)和r2c3(4)不可同假,同時r4c2(2)和r4c3(4)也不可同假,而且r24c2(2)和r24c3(4)又都只能是一真一假。這樣的話,r24c2(2)和r24c3(4)這四個候選數的填數情況只可能是以下兩種可能了:

  • r2c2(2)和r4c3(4)同時為真;
  • r2c3(4)和r4c2(2)同時為真。

別無其它可能。這樣一來,觀察r2c239這組ALS,裡面的r2c2和r2c3其中有且僅有一格被RCC數字佔據。那麼,ALS內其餘兩格,則會構成79數對。同理,r4c23這組ALS,裡面的r4c2和r4c3其中有且僅有一格被RCC數字佔據,剩下一格就一定是數字1。

也就是說,結構r2c239(靠上方)這組ALS一定會產生79數對,r4c23(靠下方)這組ALS一定會產生數字1,所以r2的其餘位置都不應該填入數字7和9,r4和b4內的其餘位置也都不應該填入數字1,因此刪掉它們。

這個結構分析起來非常複雜,因為帶有了兩個RCC,並且組成了特別的結構。

它的名字是什麼呢?它叫帶有雙RCC的ALS-XZ結構(Double-linked ALS-XZ)。如果把所有的英文縮寫全部展開的話,當之無愧成為最長的技巧名稱:帶有雙嚴格共享候選數的待定死鎖集合-雙強鏈結構。數數看,有22個字呢!而對比這種說法,最開始的結構因為只有一個RCC,所以可以被稱為帶有單RCC的ALS-XZ結構(Single-linked ALS-XZ)。

Part 4 ALS的雙分支匹配法拓展

除了ALS-XZ外,還有沒有更特殊一點的結構呢?當然是有的了!


ormalsize 	ext{4-1 雙分支匹配法的AIC和超鏈思維}

不知道你有沒有注意到,在不規則Wing結構一講的總結之中,我寫出了雙分支匹配法的AIC寫法。如果你沒注意到的話,我現在來講一下它的AIC角度。

如圖所示,這就是之前雙分支匹配法(XY-Wing)的例題。當時,我們是分情況討論的。我們這個時候看下它的AIC看法:首先,因為強弱關係都是可以不管方向的,所以我們把其中一個弱關係調換一個方向(圖中的箭頭方向變一下),然後把分情況討論的單元格r1c2的候選數用強關係連接起來。這個時候,鏈變成這樣:

r5c2(4=3)-r1c2(3=8)-r2c3(8=4) => r2c2, r6c3<>4

這樣寫,就會發現,它其實就是一個雙值格鏈(XY-Chain)之中,較簡單的形式,一般雙值格鏈很長,這裡長度卻為5,算是比較短的了。

所以,雙分支匹配法的AIC寫法則是一個涉及三個雙值格的雙值格鏈((z=x)-(x=y)-(y=z),括弧表示關係產生於同一個單元格內)。

最後,我們學習了ALS,活學活用一下,把這個鏈再簡化一下。

r5c2(4)=r1c2(8)-r2c3(8=4) => r2c2, r6c3<>4

這樣也是可以的。我們把r15c2看作一組ALS,就可以產生r5c2(4)=r1c2(8)的異數同區域強關係。當然了,這樣看也可以:

r5c2(4=3)-r1c2(3)=r2c3(4) => r2c2, r6c3<>4

把r1c2和r2c3看作一組ALS。


ormalsize 	ext{4-2 ALS-雙分支匹配法(ALS-XY-Wing)}

之所以先講解雙分支匹配法結構的AIC和超鏈寫法,是為這個ALS超鏈版本作鋪墊。

如圖所示,它的鏈寫成這樣:

r1c78(7)=r1c7(4)-r46c7(4)=r5c9(6)-r5c4(6)=r25c4(7) => r1c4<>7

我們來看一下,裡面的強弱關係依次是怎麼產生的。

首先是r1c78(7)和r1c7(4)。我們把r1c78看作一組ALS(兩個單元格,2、4、7三種候選數),根據強關係第二定義,當r1c78(7)和r1c7(4)同時為假時,r1c78之中只剩下2一種候選數,填入r1c78兩個單元格之中很明顯是會矛盾的,所以r1c78(7)和r1c7(4)不可同假。

其次是r46c7(4)和r5c9(6)。我們把{r456c78, r5c9}看作一組ALS(七個單元格,1、2、3、4、5、6、7、8八種候選數)。根據強關係第二定義,當r46c7(4)和r5c9(6)同假時,這組ALS內就會同時缺少4和6兩種候選數,從八種直接變為六種。顯然,六種候選數無法填滿到七個單元格之中,所以矛盾,即r46c7(4)和r5c9(6)不可同假。

最後是r5c4(6)和r25c4(7)。我們把r25c4看作一組ALS(兩個單元格,6、7、9三種候選數)。根據強關係第二定義,當r5c4(6)和r25c4(7)同假時,這組ALS內只剩下9這一種候選數,要填入到兩格之中是不可能的。所以r5c4(6)和r25c4(7)不可同假。

最後,我們得到了r1c78(7)和r25c4(7)至少一個為真的結果。r1c78(7)是一個區塊組,而r25c4(7)也是一個區塊組。區塊組成立表示內部有且僅有一個數是正確的。於是刪除掉兩個區塊組的交集,應當就是r1c4(7)了,所以r1c4<>7。

這個結構很奇特,我們觀察它的超鏈寫法,它和雙分支匹配法的寫法基本一樣:z=x-x=y-y=z,所以這個結構稱為ALS-雙分支匹配法(ALS-XY-Wing)。

那麼到現在,ALS就暫時先講到這裡。

Part 5 總結

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

  • ALS-雙強鏈
    • 英文名:ALS-XZ Rule
    • 難度係數:SER 無,XR 7.5
    • 命名空間:Tech.AlmostSubset.ALS.Chain.Double
  • ALS-雙分支匹配法
    • 英文名:ALS-XY-Wing
    • 難度係數:SER 無,XR 8.0
    • 命名空間:Tech.AlmostSubset.ALS.Chain.Triple

使用到的術語:

  • 超標準鏈
    • 英文名:Hyper Alternating Inference Chain
    • 解釋:內部產生的強弱關係包含同區異數強弱關係或跨區同/異數的強弱關係的AIC結構。
  • 嚴格共享候選數
    • 英文名:Restricted Common Candidate
    • 解釋:由兩個不同的ALS用弱關係連接起來的兩數。

推薦閱讀:

第5講:隱性數組
第16講:欠一數組
第30講:ALS的綜合運用
第27講:隱性ALS
第11講:唯一矩形(基本構型)

TAG:數獨 |