第 39 講:環(huán)
環(huán)在鏈里的應用非常廣泛,由于它的結構的特殊性,強弱關系能夠首尾拼接形成環(huán)結構,甚至完全找不到開頭。但正是因為這個特征,導致環(huán)的刪數(shù)非常多,因而受到眾多難題玩家的青睞。
Part 1?標準環(huán)
在學習技巧之前,我們先來看看環(huán)的基本形態(tài)。

如圖所示。鏈的寫法如下:
發(fā)現(xiàn)了兩點神奇的現(xiàn)象:r1c4(4)首尾成環(huán)了,而且強弱關系是交替的,也就意味著,就圖上的情況而言,隨便找個藍色節(jié)點都有可能成為開頭。于是我們隨便選了個節(jié)點,比如r1c4(4)作為了開頭,然后寫成了環(huán)形。
還有一點是刪數(shù),所有紅色的都是刪數(shù),但這一次,紅色的刪數(shù)比起之前用過的鏈技巧而言,刪數(shù)多太多了。那么如何推導呢?反正都是個環(huán)結構,隨便找個弱關系,把它拆掉。比如我們拆掉最下方的r7c4-r7c9(8)的弱關系。然后鏈變成這樣:

這樣就會發(fā)現(xiàn),它就是一個AIC了。那么刪數(shù)就是兩個8共同對應的區(qū)域(r7)的其余8了。那我再留下這個弱關系,去斷開剩下的隨便一個弱關系,也可以得到對應的刪數(shù)。所以所有刪數(shù)如最開始的盤面所示。
這種結構特殊之處就在于,鏈的首尾是完全拼接在一起的,而且鏈頭還不好去找到唯一的那一個位置,這就區(qū)別于之前講到的不連續(xù)環(huán)了。不連續(xù)環(huán)雖然名叫不連續(xù)環(huán),是有環(huán)這個字的,但是我們依然知道它是一種鏈結構,并且有頭有尾,這一點就和現(xiàn)在講到的這個東西不同了。
那么,這樣的特別結構,叫做標準環(huán)(或連續(xù)環(huán),簡稱環(huán),Continuous Nice Loop)。
最后需要引起注意的是,弱關系也包括單元格內的弱關系,比如圖中的r1c8(2-4)時候,可以刪掉r1c8(7),至于原因,把鏈從r1c8(2-4)這里拆開,得到了一條鏈頭為r1c8(4),鏈尾為r1c8(2)的AIC,它們的交集,因為是異數(shù)的,而且同一單元格,所以交集只能是r1c8內的其余候選數(shù)。所以這一點千萬別忘記了。
所以說,環(huán)有哪些性質可以直接使用呢?
Part 2?環(huán)的基本形式和特征
標準環(huán)具有如下的特征(請最好背下它們):
任意弱關系都能直接拆掉,并得到一條鏈,從而獲得當前的刪數(shù)效果;
任意節(jié)點都可以作為整條鏈的鏈頭;
環(huán)內的填數(shù)情況一共只有兩種;
環(huán)的長度一定為偶數(shù);
環(huán)里面的所有的相鄰節(jié)點既可以看作強關系,也可以看作弱關系。
那么,這五點我將一一論證。
第一點,這是環(huán)的刪數(shù)原則和基本思想。所以這一點我就不用說明了(就是拆成鏈結構,然后找刪數(shù))。
第二點,例如下面兩個舉例的節(jié)點:r1c4(4)作為開頭和r7c9(8)作為開頭。


可以從例子里看到,實際上,除了換了鏈的方向以外,鏈沒有發(fā)生任何變動。由于鏈必須以強關系開頭的關系,使得有些以弱關系起頭的節(jié)點不得不反向繪制鏈。不過反向繪制并不會影響到什么,因為強弱關系是可以反向的,而且反向后,弱關系開頭就變?yōu)榱藦婈P系開頭了,這是因為以弱關系開頭的節(jié)點和它后一個節(jié)點連接;而在反向后,就會和它前面一個節(jié)點連接,而它前一個節(jié)點和它本身是形成強關系的。
第三點,我們在推理的過程都是最簡單的“不填 -> 填 -> 不填 -> 填 –> ……”,這樣的周而復始的循環(huán)。而環(huán)結構之中,由于推理最終回回到最初的位置,并且仍舊能夠按照原來假設所定的填數(shù)狀態(tài)繼續(xù)重新推理,所以這一定是其中的一種情況,而根據(jù)性質2,我們知道,任何節(jié)點都能做起始點,也就是說,我們不妨將節(jié)點切換到與其相鄰(它的上一個候選數(shù)填數(shù)狀態(tài)或者其下一個候選數(shù)填數(shù)狀態(tài))的位置上去,讓它作為鏈頭,這個時候填數(shù)狀態(tài)就能全部交換了。但是,由于結構內就兩種填數(shù)情況,所以這就說明了,環(huán)結構內一定只涉及兩種填數(shù)。
第四點,強弱關系數(shù)量一樣,強關系有n個,弱關系就有n個,那長度自然是2n個,2n是一個偶數(shù)。
第五點,根據(jù)性質3,我們可以直到環(huán)內僅存在兩種填數(shù)情況,而兩種填數(shù)情況顯然只可能使得任意相鄰的兩個節(jié)點一真一假,而一真一假的情況是既滿足強關系的定義(不同假),也滿足弱關系的定義的(不同真)。有些時候,第五點也被說成“所有強關系都能轉為弱關系理解;而所有弱關系都能轉為強關系理解”,因為一真一假的邏輯恰好是同時滿足強關系和弱關系的定義的。
不過之前說的不連續(xù)環(huán)并不滿足這些特性,只是一種結構成環(huán)而邏輯無環(huán)的特別情況罷了。實際上,不連續(xù)環(huán)里的“環(huán)”字的意義和我們此處介紹的環(huán)的意義不同。所以,不連續(xù)環(huán)和連續(xù)環(huán)實際上就差在了“不”這個字上:不連續(xù)環(huán)是無法連續(xù)推導的,因為它始終是符合鏈的規(guī)則,有頭有尾,找交集刪數(shù);而連續(xù)環(huán),任意節(jié)點為頭都可以。
Part 3?常見技巧的環(huán)視角
下面來介紹一些常見技巧的環(huán)視角。
3-1?標準鏈列


如左圖所示,這是一個X-Wing(二鏈列)技巧,它的定義域是c34。我們可以嘗試把定義域上的兩個單元格視為共軛對,并構成強關系,然后把刪除域上同列的兩個候選數(shù)作為弱關系連起來,最終構成右圖的環(huán),這種環(huán)的刪數(shù)和原結構的刪數(shù)完全一樣。而理解方式,只需要變化一點,因為X-Wing結構的形式導致了共軛對一定會出現(xiàn)兩處,便可立馬繪制出環(huán)結構。
實際上,只要我們能在魚的所有定義域都構成共軛對的形式,那么結構就一定是一個環(huán),比如下面的這個三鏈列的例子,它的所有定義域區(qū)域都會產生共軛對。


如圖所示,這就是一個三鏈列,它的環(huán)的畫法。
3-2?顯隱性數(shù)組
數(shù)組之所以也能刪除很多數(shù)字,是因為它實際上也是一個環(huán)。


如圖所示,這是1、4顯性數(shù)對的環(huán)視角??梢园l(fā)現(xiàn),由于顯性數(shù)對是雙值格的關系,單元格之間的候選數(shù)的關系變?yōu)槿蹶P系,而單元格內的候選數(shù)關系即為強關系。
同樣地,三數(shù)組也是如此。只要三數(shù)組的三個單元格都是雙值格,那么就一定可以畫成環(huán),如圖所示。


除了顯性數(shù)組外,還有隱性數(shù)組結構也可以這么干,不過在之前我們說到,隱性數(shù)對實際上是兩個數(shù)形成了共軛對,只是恰好位于同樣兩個單元格里,所以我們此處就會使用到這一個結論。


我們將其中的共軛對視為強關系,而單元格內作為弱關系,就形成了環(huán),并得到刪數(shù)。
所以我們可以看到,實際上可以刪不同位置的數(shù)值的情況,一般都是使用環(huán)來解決的,只是我們平時很少,甚至不會使用環(huán)來作圖。
3-3?欠一數(shù)對
還記得欠一數(shù)對嗎?欠一數(shù)對我們通過了例子來解釋,而且還通過了直觀層面,假設為x和y的方式來得到數(shù)對形式。不過實際上,正是因為它能通過x和y的方式來假設,才有了它的環(huán)的視角。


如圖所示,右圖就是左圖的環(huán)的畫法??梢钥吹?,這個例子帶了一個區(qū)塊,而這個區(qū)塊還是很簡單的結構,所以不用過多考慮刪數(shù)的問題。注意r7c3單元格內的弱關系,也是要刪數(shù)的。
3-4?雙RCC的ALS-XZ
實際上,這個古怪的玩意兒就是一個環(huán)。不過這個環(huán)的邏輯在之前已經超綱地提到了(因為它還帶有兩個ALS區(qū)域,還要考慮ALS區(qū)域的刪數(shù),所以在前面提到算是“超綱”了),所以我們就不用過多去啰嗦它的基本邏輯。下面的一些復雜的環(huán)結構,它們的刪數(shù)將涉及到這些內容,所以具體的原理我們在下方會提到。