標籤:

第15講:全雙值格致死解法

這一講要講解一個針對於全盤內所有沒有填數的單元格的結構。

好了答應你們,講完這個技巧,致命結構就告一段落了。後面還有致命結構,但是不會放在一起了,都是一些特別難的致命結構,我們放到最後面去。

另外,這一節的原理稍微比較抽象一些,希望你同之前一樣,拿出草稿紙寫寫畫畫。

Part 1 標準型及原理闡述(BUG Type 1)

如圖所示,我們觀察全盤,發現一個神奇的現象:全盤除了r8c9這一格外,其餘所有的單元格都有兩個候選數,唯獨r8c9,有三個候選數。而且,這個結構特殊之處在於,結構所有區域(每一個行、列、宮),均包含規格參差不齊的數組結構,而這樣的結構正是由於這個原因,沒有任何的矛盾推論。這就很奇怪了,並促使我們想思考一個問題:居然這麼神奇的結構,都沒有刪數的結論,我堅信它是有邏輯得到刪數結論的,而這個邏輯到底是怎麼樣的呢?

如果我們去掉r8c9的候選數1,先當r8c9(1)不存在。於是,你會發現一個神奇的現象:所有沒有填數的單元格里,恰有兩個候選數。

既然所有的空單元格內都是兩個候選數,而每一個空格涉及到的所有區域下,所有空單元格都恰好能夠構成數組結構。比如b3,所有空單元格{r2c8, r3c9}直接可以構成36數對;又如c8,所有空單元格r2468直接可以構成1367四數組,所有區域都是這樣。

好像是個廢話?好像r8c9(1)去不去掉也是這樣的吧?看我接下來怎麼推導哈。

既然每個單元格都是兩個候選數,而且都能找到和它一起構成數組的其他單元格,那我們隨便選取一格,來假設填數。隨便選取一格,比如說r2c1,有1和6兩個候選數。我們假設就會分為r2c1=1和r2c1=6兩種填數情況。

又是假設?這麼麻煩?我們不需要假設填完全部情況,而是簡單思考一下就可以了。試想一下,全盤既然都是兩個候選數,那又可以構成數組結構,那麼只要有一格填完數字,而每一個單元格都可以找到和它一起構成數組的其餘單元格,於是就可以把這個數組填完。比如說r2c1,與之構成數組結構的有r2c128的136三數組、r23c12的1369四數組以及r237c1的169三數組。既然r2c1填入其中一個數了,那這些數組理所當然地可以根據這個數推理而得到剩下的部分。由於全盤都是兩個候選數的單元格,那r2c1填入其中一個數值,就必然會形成一種填法。同理,r2c1填入另外一個數值,那就必然會形成另外一種填法。隨即形成兩個填數完全不一致的盤面結果。

什麼?還沒理解意思?

就比如一個三數組,又因為這個結構全部單元格都是兩個候選的緣故,三數組的話,三個單元格的候選數情況就只可能是這樣的:

ab、ac、bc

是吧。如果{ab}這一格填a和填b,會產生兩種不同的情況:

情況1:a、c、b

情況2:b、a、c

對吧。每一個單元格在其行、列、宮上都能夠找到對應的數組結構,所以每一個行列宮都可以發現這樣的形式,直到完成盤面。

每一個兩個候選數的單元格,意味著每一個單元格都有兩種不同的填法,而假設其中一格,都能使得這樣的單元格直接出數。所以全盤的空單元格都可以根據一個單元格,其餘單元格會受到此處填入的情況影響,導致其他位置上的填數也會產生變化,即「牽一髮而動全身」。

因為有兩種填法,所以這樣的填法一定會產生兩個填法完全不一樣的盤面結果。

由於全盤都有數組結構的緣故,數組的互換情況就導致了兩種完全不同的填數方式。如果其中一個盤面是正確的話,那麼另外一個盤面就也應該是正確的。

試想一下,數獨只有一個答案,怎麼可能出現兩個盤面都是正確的的情況?所以兩個情況都應該是錯的才對。因為剛才我們說到過,只要其中一種填法是對的,那另外一種填法因為數組的互換,也應該是正確的。兩個都是對的,這明顯不滿足數獨唯一解的要求呀。

所以,這樣的結構,即全盤都只有兩個候選數、每一格都能夠構成數組的特殊結構,就不應當單獨存在於盤面之中。所以,最初的假設(假設r8c9(1)消失於盤面之中)就不正確了。反過來,結論就應為r8c9=1。

這個結構稱為全雙值格致死解法,而英文名則為Bivalue Universal Grave,並簡稱BUG。這裡要介紹一個需要注意的地方:這個英文名是不嚴謹的。之後我們會告訴大家這是為什麼。

BUG,全名Bivalue Universal Grave,直譯的中文叫「雙值-全-墳墓」,所以第一個版本的翻譯是「全雙值墳墓」,後面發現翻譯不大對,並且體現不出本質意思後,就被翻譯為了「雙候選數致死解法」,後面發現,這個說法還有歧義,隨後又被翻譯為「全雙值格致死解法」,裡面的雙值格(Bivalue Cell)指代的是裡面有隻有2個候選數的單元格。

這裡介紹一個東西。有多少個候選數就稱為「多少值格」,有三個候選數的單元格就稱為三值格(Trivalue Cell),而一般多於兩個候選數的單元格都稱為多值格(Multivalue Cell)。

還有一個問題。這個結構為什麼叫「致死解法」呢?為什麼不叫「致命」而是「致死」?這是因為,在r8c9(1)去掉之後,結構本身不是出現UR、UL、AR以及拓展矩形那樣、內部有兩種不同的填法,卻對剩餘盤面不造成其他刪數影響的形式,而結構本身內部就已經是無解的了。剛才我們就說到過,如果其中一種填法是正確的,那另外一種填法肯定也是正確的,這就出現兩種不同的填法都正確的現象,這違背了唯一解的要求。所以結構的兩種填法,它們的內部都是不可能存在正確的填法的,換句話說,怎麼填都會出現違背數獨規則的矛盾。這一種現象,我們稱為「致死」,就不再叫「致命」了。

那麼,結構到底是怎麼看到這個結論的呢?難道我還要把r8c9的所有候選數一個一個地試一遍才知道?當然不是,接下來我就告訴大家怎麼看到它。

Part 2 結構的觀察

之前說到兩點:

  1. 只有一個三值格,其餘都是雙值格;
  2. 每一個單元格都能找到某個或某些同區域(行、列、宮)的單元格與之構成數組結構。

是滿足結構的必要兩點。那麼,針對這兩點,我們可以得到一個便於觀察的推論:每一個候選數在其所在的行、列、宮下,均有兩個相同的數。文字可能敘述不嚴謹,來看一下我舉例你就知道了。

當r8c9<>1時,每一個數在其所在的行、列、宮上恰好都有兩個同樣的數。比如r3c9(3),r3c9(3)所在的行(r3)、列(c9)和宮(b3)內,都恰好有兩個3;又如r7c1(9),r7c1(9)所在的行(r7),列(c1)和宮(b7)內,都恰好有兩個9。

那麼,這裡再提一個術語:真數(True Candidate)或非BUG候選數(Non-BUG Candidate)。真數指的是和BUG結構無關的候選數,或者說是那個正確的數字,比如盤面之中r8c9(1)就是真數。

所以,我們在找的時候,就把不是出現兩次的數字都給它找出來,就可以了。但是,前提是,這個結構在去掉這樣的數字之後,是能出現BUG致死形式的。

.-----------.-------------.------------.| 67 | 23 26 | 37 || | 14 17 | 67 46 || 78 68 | 35 67 45 | 39 49 |:-----------+-------------+------------:| 78 | 18 17 | || 78 | 59 59 | 78 || | 27 28 | 67 68 |:-----------+-------------+------------:| 29 | 49 26 146 | 39 13 || 29 | 29 | || | 17 79 | 18 89 |------------------------------------

那麼這個盤面可不可以形成一個BUG致死形式呢?不可以。為什麼呢?因為觀察r7,你會發現其中有三個有29、39、49這樣排布候選數的單元格,這便讓數字9直接在r7上出現了3次。而它們都是雙值格,很明顯不可能在這三格上下手尋找真數。所以我們無法讓此處r7c6的其中任意一個候選數去掉之後,形成BUG致死形式。因此這個盤面也不可以直接構成BUG。

好了,知道了這一點之後,我們來看一些例子。

呼哇,終於講完原理了,太費勁!!!!

Part 3 待定數型(BUG Type 2)

如圖所示,全盤僅剩下三個三值格,我們把疑似真數的候選數找出來,它們分別是r1c5(7)、r3c4(7)和r6c5(7)。此時,把它們仨同時去掉,此時盤面的結構就一定會形成BUG致死形式(上面羅列的那兩點要求)。這裡就不啰嗦去再證明一遍了哈。如果有不懂的地方的,可以在下方提問。

導致BUG致死形式就意味著,結構不應直接存在於盤面之中;反過來,r16c5(7)和r3c4(7)也就都應該為真數。那三個真數就意味著都是正確的嗎?顯然不是。多個真數的BUG結構,真數應該是「都不可同時消失於盤面之中」,而不應該是「真數全部都正確」。所以,換句話說說,r16c5(7)和r3c4(7)里,至少有一個是正確的填數。那麼不管誰是正確的,它們都看得到的地方(共同對應的地方),就不應該是正確的。所以,r3c5<>7。

這個結構和UR待定數型類似,所以稱之為BUG待定數型(類型2)。

最後啰嗦強調一下,「真數至少有一個正確」,是包含「所有真數同時正確」的情況的,所以分析的時候,不要漏掉情況,否則會導致思維不嚴謹,從而導致結構結論的判定錯誤。

Part 4 待定數組型(BUG Type 3)

BUG待定數組型有顯隱性之分,但是這裡因為示例較少,暫時只找到了顯性待定數組版本。

如圖所示,很明顯,這裡的兩個真數不可同時去掉,否則出現BUG致死形式。但是此時它們也不可能同時都正確。同時都正確意味著一格8一格9,那r1c8就無法填數了。所以最終我們知道的是,兩個真數有且僅有一個是正確的。不管誰是對的,都總會有一個是8或9,會和r1c8構成89數對。這一點很像是顯性待定數組型,是吧?

所以,c8不應該有其餘單元格填8或9的情況,因此刪掉這些8和9。即圖上的結論就應為r67c8<>89。

這就是BUG顯性待定數組型(類型3A)。

Part 5 共軛對型(BUG Type 4)

BUG共軛對型(類型4),和之前UR共軛對型是一樣的推導方式。

找到全盤的所有疑似真數,然後去掉看是否構成BUG致死形式。結果這個例題比較神奇的是,不同的真數可以在同一個單元格內。這個例子有四個真數:r1c7(26)和r2c7(34)。

如果它們全部去掉,的確會形成BUG致死形式,所以它們都應該是貨真價實的真數。那麼,至少都有一個真數是正確的。但是,c7有9的共軛對,意味著r12c7有且僅有一格是填9的。因為9不是真數的緣故,所以其中一格是9,那另外一格就必然只能填真數了。所以這樣一來,就跟這兩格不是真數或9的其餘候選數沒有任何關係了,因此可以安全地刪除掉它們。

很神奇吧!那麼,基礎階段,所有的致命結構就全部講完了。更多的致命結構,將會放置到後面講解,難度稍大。希望細心和踏實的你,學習數獨技巧也要加油哦!

Part 6 總結

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

  • 全雙值格致死解法
    • 英文名:Bivalue Universal Grave
    • 難度係數:5.4 + 類型對應權值
    • 命名空間:Tech.DP.BUG

使用到的術語:

  • 雙值格
    • 英文名:Bivalue Cell
    • 解釋:只有兩個候選數的單元格。
  • 三值格
    • 英文名:Trivalue Cell
    • 解釋:只有三個候選數的單元格。
  • 多值格
    • 英文名:Multivalue Cell
    • 解釋:有三個或更多候選數的單元格。
  • 真數
    • 英文名:True Candidate
    • 解釋:去掉後會使得形成BUG致死形式,從而最終正確的數字。也叫非BUG候選數。
  • 非BUG候選數
    • 英文名:Non-BUG Candidate
    • 解釋:去掉後會使得形成BUG致死形式,從而最終正確的數字。也叫真數。

推薦閱讀:

第22講:不規則Wing結構

TAG:數獨 |