標籤:

第49講:形狀變異魚(1)——宮內魚

今天我們一起進入到魚的學習之中來!我們要講一種新的魚結構,之前講到了標準魚,還為它找到了一種更加方便的理解方式和觀察方式,今天我們要講的技巧,是形狀發生了變化(注意哦,並不是長鰭)。

不過我們首先要來看下它的原理。

Part 1 宮內魚形成理解

如圖所示,我們用之前魚一節沿用下來的魚圖進行描述。

圖例:/ 表示所在單元格沒有候選數x。x 表示所在單元格有候選數x。

如圖所示,我們發現,此時由於r258上只有九個單元格包含候選數,這明顯就是劍魚(三鏈列)結構嘛!

接著,我們移動其中刪除域的一部分,比如我們現在移動一下c5,然後放到和c8並排的另外一列上去,比如說c7。

如圖所示,這樣來看,它依然是一個三鏈列。

那麼,現在我要施展魔法了,我們把r2的定義域部分給它「壓縮」放到b3裡面去~ 看著,神奇的現象出現了:

如圖所示,這個結構依然成立。我們來看看為什麼。首先,我們可以從最為基本的假設開始理解它(因為暫時還沒有更好的角度理解為啥刪這些數字):

b3下有六種填數可能位置:c78b3(r123c78)。

如果c7b3(r123c7)的其一的x為真的話,我們可以直接得到r58c7都不能是x的事實,於是乎,我們發現r58c28出現了關於x的二鏈列結構。

二鏈列是可以直接刪除c2和c8的其餘單元格的,再加上原本假設的c7b3可以排除c7的情況,這種情況就可以排除c278的其餘單元格了。

但如果是c8b3(r123c8)的其一的x為真的話,我們則可以直接得到r58c8都不能是x的事實,於是r58c27出現了關於x的二鏈列結構,可以刪除c27的其餘單元格。再算上c8b3本可以排除的c8的其餘單元格的x,依然是可以刪除c278的x。

所以,兩種情況必然都可以排除c278其餘位置的x,所以這個結構照樣可以刪除三列,和原本的結構沒啥大的區別。

這個結構被稱為宮內魚(Franken Fish),是標準魚的一種變種。而對它系統化的定義是:當結構定義域或刪除域之中的區域包含宮的,但不同時包含行列的,稱為宮內魚

舉個栗子,如果一個魚的定義域由兩行一列組成,儘管刪除域包含宮,但因為定義域同時包含行和列,所以不屬於宮內魚;而如果一個魚的定義域為兩行一宮,刪除域是三列的話,就滿足宮內魚的定義(此時是定義域包含宮);而如果刪除域包含兩行一宮,定義域只有三列的話,依然屬於宮內魚(此時是刪除域包含宮)。

下面來看一下,這個結構具有的性質(殘缺和加鰭的情況)。

我們知道,上圖已經是一個標準的宮內魚的結構了,那麼,它和標準魚結構不同的地方是,它的刪數原理會稍顯複雜一些。

由於結構的特殊性,假設依靠的是c7b3和c8b3兩個部分討論的,所以我們只需要讓c7b3和c8b3兩個部分保留之中的任意一格就可以了。如圖所示。

這樣也可以進行推導。另外,我們甚至可以打破原有的思維,我們在剛才說到,假設之後會產生二鏈列結構,如果我們讓二鏈列結構本身變成殘缺甚至是退化版本的話,因為本身結構會背降解,但因為整體結構不被降解的特別情況,所以它可以存在。

於是我們選取r58c78的其中兩個對角單元格去掉它們,也是可以的。只是,這樣殘缺的情況,就可以直接被當作同數環來對待了。

那麼,思考一下,這個結構如果要添加鰭,那麼鰭的位置應該放在哪些地方才可以?

首先,鰭的位置一定存在結構裡面用斜杠/來表示的地方。r58c456(r58b58)就必然不行,因為這裡有鰭會破壞推導情況,並且無法直接對應刪數,所以這些位置上存在鰭的情況是不可以的。

那麼,剩餘位置上,只要能夠對應到刪除域上的刪數,其實就可以,所以其餘斜杠/處都是可以的。

如圖所示,其中的字母F表示可以放鰭的位置,I則是可以殘缺的位置。

其他宮內魚結構選講

高階宮內魚(Greater-sized Franken Fish)

其實,四階的結構也可以類比於此,進行推導哦,那麼宮內四鏈列(Franken Jellyfish)長什麼樣呢?

如圖所示,你可以猜測一下,它原本的形成方式是如何的。

低階宮內魚(Less-sized Franken Fish)

另外,二階的結構就不必要去這麼看了,因為它直接被等效於區塊:

如圖所示,首先我們可以直接發現,r8存在x的區塊,可以刪除r79b9(x)(r79c789(x)),然後觀察c9,還有一個宮區塊,可以刪除c78b6(x)(r456c78(x))。

這樣兩次宮區塊(Claiming)依舊可以完美刪除這個宮內二鏈列(Franken X-Wing)所要刪除的數字。

轉置宮內魚結構

另外,我們可以利用一些小小的思維,得到另外一種宮內魚,即使此時定義域並不包含宮區域:

首先我們拿出一個基本的宮內魚結構,如圖所示:

然後定義域和刪除域完全交換。

於是變成了這個樣子,對比剛才的魚圖,你會發現,x的位置並沒有任何變動,但「/」的位置則變化成了現在的刪除域,而原來刪除域上,每一個單元格都包含了「/」符號。

斜杠/表示當前位置並不含有候選數x,所以這就告訴了我們,結構的定義域和刪除域完全發生了交換。

這樣的結構依然是成立,並且可以刪數的,刪除的則是現在的刪除域上的數(原來的定義域,現在的刪除域,不要搞混了哦)。

這種定義域和刪除域交換的行為被稱為結構的轉置(Transpose)。

另外,這裡提兩個術語:魚的(Gender)。我們用陰性(Feminine)和陽性(Masculine)區分結構的定義域還是刪除域滿足定義。如果定義域滿足定義的(定義域包含宮),稱為陽性魚(Masculine Fish);而刪除域滿足定義的(刪除域包含宮),稱為陰性魚(Feminine Fish)。還有中性(Neuter),但表示的是定義域和刪除域同時都滿足定義的魚,不過當下講到的宮內魚結構則暫時並不可能,這樣的結構也不穩定,魚的原理一節將會被放到最後一節才會講到,所以請你耐心等待吧。

好了,我們來看一下,這種魚結構的示例吧!

Part 2 宮內魚示例

如圖所示,這個魚就是一個宮內三鏈列(Franken Swordfish)。我們依靠剛才的思維,知道了這種魚的定式結構和殘缺情況,所以它就是一種基本的宮內魚結構。

如圖所示,這也是一個。

下面來猜想一下,四階的宮內魚(宮內四鏈列)長什麼樣。思路還是一樣:構建一個標準四鏈列,然後隨便選擇其中其中一個刪除域區域,然後和另外一個拼起來,然後移動一個定義域區域到宮內,可以拼接起來。這裡就省略變型過程的圖了,如圖所示,就是結果。

對應的,也有一個示例。

這就是一個示例。

最後給大家看一則帶有鰭的示例。

怎麼樣,這個結構標準多了吧!

推導思路如下:如果鰭真,則可以刪除刪除域下r23c23四格的候選數3;如果鰭假的話,則是一個很標準的宮內魚結構,也可以得到所有刪除域的刪數。

那麼,不論什麼情況成立,都可以刪除r23c23(3),所以r23c23<>3。


推薦閱讀:

第22講:不規則Wing結構
第33講:標準環的基本理解
第16講:欠一數組
第9講:鰭
第6講:數組的觀察和互補

TAG:數獨 |