唯一解法
|
前言
數(shù)獨這個數(shù)字解謎游戲,完全不必要用到算術(shù)!會用到的只是推理與邏輯。剛開始接觸數(shù)獨時,即使是只 須用到"唯一解"技巧的簡易級謎題,就已可讓我們焦頭爛額了,但是隨著我們深陷數(shù)獨的迷人世界之后,這 類簡易級的數(shù)獨謎題必定在短時間內(nèi)難再使我們獲得征服的滿足。于是,當(dāng)我們逐步深入、進階到更難的游 戲后,我們將會需要發(fā)展齦?多的解謎技巧。雖然最好的技巧便是我們自己發(fā)現(xiàn)的竅門,這樣我們很容易??能記住它們,運用自如,不需要別人來耳提面命。但是如果完全不去觀摩學(xué)習(xí)他人發(fā)展出來的技巧,而全靠 自己摸索,那將是一個非常堅苦的挑戰(zhàn),也不是正確的學(xué)習(xí)之道!所以讓我們一齊來探討數(shù)獨的解謎方法吧!
數(shù)獨的解謎技巧,剛開始發(fā)展時,以直觀式的唯一解及摒除法為主,對于初入門的玩家來說,這也是一般人 較容易理解、接受的方法,對于一般簡易級或中級的數(shù)獨謎題,如果能靈活運用此二法則,通常已游刃有余。
唯一解詳說
當(dāng)數(shù)獨謎題中的某一個宮格因為所處的列、行或九宮格已出現(xiàn)過的數(shù)字已達 8 個,那么這個宮格所能填入 的數(shù)字就剩下這個還沒出現(xiàn)過的數(shù)字了。
<圖 1> (9, 8)出現(xiàn)唯一解了
<圖 1>是最明顯的唯一解出現(xiàn)時機,請看第 8 行,由 (1,8) ~(8,8) 都已填入數(shù)字了,只剩(9,8)還是 空白,此時(9,8)中應(yīng)填入的數(shù)字,當(dāng)然就是第 8 行中還沒出現(xiàn)過的數(shù)字了!請一個個數(shù)字核對一下, 哦!是數(shù)字 8 還沒出現(xiàn)過,所以(9,8) 中該填入的數(shù)字就是數(shù)字 8 了。
<圖 2> (8, 9)出現(xiàn)唯一解了
<圖 2>是另一個明顯出現(xiàn)唯一解的情形,請看第 8 列,由 (8,1) ~(8,8) 都已填入數(shù)字了,只剩(8,9)還是 空白,此時(8, 9)中應(yīng)填入的數(shù)字,當(dāng)然就是第 8 列中還沒出現(xiàn)過的數(shù)字了!請一個個數(shù)字核對一下, 哦!是數(shù)字 9 還沒出現(xiàn)過,所以(8, 9) 中該填入的數(shù)字就是數(shù)字 9 了。
<圖 3> (7, 5)出現(xiàn)唯一解了
<圖 3>是另一種明顯出現(xiàn)唯一解的情形,請看下中九宮格,在這個九宮格中除了(7, 5)還是空白外,其他宮格 都已填有數(shù)字了,所以(7, 5)中應(yīng)填入的數(shù)字,當(dāng)然就是下中九宮格中還沒出現(xiàn)過的數(shù)字了!請一個個數(shù)字核對一下, 哦!是數(shù)字 1 還沒出現(xiàn)過,所以(7, 5) 中該填入的數(shù)字就是數(shù)字 1 了。
<圖 4> 一般情形下的唯一解
類似 <圖 1>~<圖 3>這種明顯出現(xiàn)唯一解的情形,在一般情形之下及解題初期是不太可能出現(xiàn)的! <圖 4>是一個最典型的簡易級數(shù)獨謎題,如果單純觀察某一個行、列或九宮格,沒有一處是已出現(xiàn) 8 個數(shù)字的, 難道如此就無解了嗎?非也!非也!在此圖中,出現(xiàn)唯一解的宮格其實有 3 處之多!你能找出來嗎?
沒錯,在一般情形之下及解題初期,唯一解的尋找必須綜合所處的行、列及九宮格三者,同時過濾篩選出已出現(xiàn) 的數(shù)字才行!如果漏掉其一,可能就無法找出唯一解的出現(xiàn)位置了。現(xiàn)在且不忙著填入數(shù)字,先來找找看<圖 4>中 目前已出現(xiàn)的唯一解在哪兒吧:
第一個唯一解位置在(2, 3):(2, 3) 所處的第 2 列中已出現(xiàn)的數(shù)字是:9、3、5、7。所處的第 3 行中 已出現(xiàn)的數(shù)字是:4、2、6、8。至于所處的上左九宮格中,已出現(xiàn)的數(shù)字是:2、9、4。所以綜合而言, 受其所處位置的行、列及九宮格影響,不得再使用并填入(2, 3) 的數(shù)字計有:2、3、4、5、6、7、8、9。 能用來填入的數(shù)字確實只剩數(shù)字 1 這個唯一的解了。
第二個唯一解位置在(8, 7):(8, 7) 所處的第 8 列中已出現(xiàn)的數(shù)字是:1、2、8、6。所處的第 7 行中 已出現(xiàn)的數(shù)字是:3、9、5、4。至于所處的下右九宮格中,已出現(xiàn)的數(shù)字是:4、6、5。所以綜合而言, 受其所處位置的行、列及九宮格影響,不得再使用并填入(8, 7) 的數(shù)字計有:1、2、3、4、5、6、8、9。 能用來填入的數(shù)字確實只剩數(shù)字 7 這個唯一的解了。
第三個唯一解位置在(5, 5):(5, 5) 所處的第 5 列中已出現(xiàn)的數(shù)字是:1、7。所處的第 5 行中 已出現(xiàn)的數(shù)字是:2、5。至于所處的中央九宮格中,已出現(xiàn)的數(shù)字是:3、6、8、9。所以綜合而言, 受其所處位置的行、列及九宮格影響,不得再使用并填入(5, 5) 的數(shù)字計有:1、2、3、5、6、7、8、9。 能用來填入的數(shù)字確實只剩數(shù)字 4 這個唯一的解了。
以上所謂的三個唯一解位置,是以<圖 4>現(xiàn)況未填入任何數(shù)字之前而言,如果開始填入數(shù)字,出現(xiàn)唯一解的位置 可能將隨之增加。例:當(dāng)(8, 7) 填入數(shù)字 7 之后,(7, 7)將出現(xiàn)唯一解 1;如果再將數(shù)字 1 填入(7, 7), 在(7, 8)又將出現(xiàn)唯一解 3;......如此不斷循環(huán)下去,就可以將整個謎題解出了。
唯一候選數(shù)法
|
概說
依照候選數(shù)法概說一文中,候選數(shù)表的制作規(guī)則,我們可以知道:可以填入某一 個宮格的數(shù)字,一定會列于該宮格的候選數(shù)中;不在候選數(shù)中的數(shù)字,就不能填入該宮格中。
所以如果在候選數(shù)表中發(fā)現(xiàn)某一個宮格的候選數(shù)僅有 1 個數(shù)字,那就是表示:不必再考慮了!這個宮格就是 只能填入這個數(shù)字啦!如果填入別的數(shù)字,就會違反數(shù)獨的填制規(guī)則的。
利用“找出候選數(shù)表中,候選數(shù)僅有 1 個數(shù)字的宮格來,并填入該候選數(shù)”的方法就叫做唯一候選數(shù)法(Singles Candidature, sole Candidate)。
唯一候選數(shù)法示例
<圖 1>數(shù)獨謎題的候選數(shù)表
<圖 1> 是我們在候選數(shù)法概說一文中完成的候選數(shù)表,其中有好幾個宮格的候選數(shù) 都只有 1 個,所以可以利用唯一候選數(shù)法來進行填制。先還不要填入數(shù)字,我們先來找找看,有哪些宮格有 唯一候選數(shù)?
在 (2, 7) 有唯一候選數(shù) 7。
在 (5, 5) 有唯一候選數(shù) 5。
在 (8, 3) 有唯一候選數(shù) 3。
哇!同時出現(xiàn)了 3 個唯一候選數(shù)??!那么,先填入哪一個會不會影響填制結(jié)果呢?當(dāng)然不會了, 只要你高興,喜歡先填哪一個都沒問題的。
好,就在這 3 個宮格中填入他們的唯一候選數(shù)吧,填制結(jié)果如<圖 2>: 
<圖 2>
哇!又有唯一候選數(shù)出現(xiàn)了呢!沒錯,一般簡易級的數(shù)獨謎題,如果使用直觀式的 唯一解法及摒除法來解題,即使是數(shù)獨老手,也要花費相當(dāng)?shù)墓し虿拍芡瓿桑?但是如果采用唯一候選數(shù)法,從候選數(shù)表制作完成開始,唯一候選數(shù)將一個一個接連不斷的出現(xiàn),輕輕松松的 就可以完成解題啦!<圖 3> 是 <圖 1> 的完成解。 
<圖 3>完成解 |
隱性三鏈數(shù)刪減法
|
概說
遇到了高級、困難級的數(shù)獨謎題,使得唯一候選數(shù)法和隱性唯一候選數(shù)法黔驢技窮的時候,就是各種刪減法上場的時機了。在各種的刪減法中,哪一個要先用 是隨個人之喜好的,并無限制。本頁介紹的例子當(dāng)然可用其他刪減法完成解題,但還是要以隱性三鏈數(shù)刪減法優(yōu)先??!
<圖 1>
請看<圖 1>的第 2 列,數(shù)字 1、7、8 只出現(xiàn)在(2, 1)、(2, 7)和(2, 8)這三個宮格的候選數(shù)中;這時 隱性三鏈數(shù)刪減法的條件已成立了!這表示第 2 列的數(shù)字 1、7 和 8 將只能填到這三個宮格中,因為: 如果讓別的數(shù)字填入這三個宮格之中后,這三個相異的數(shù)字能填入的可能宮格就只剩下兩個,而那是 不可能的事!所以若這三個宮格的候選數(shù)中還有其他數(shù)字,全部是多余無用的,它們已不可能再用來 填入這些宮格中了,所以可以毫不考慮的把它們刪減掉。于是(2, 7)和(2, 8)這兩個宮格候選數(shù)中的 6 都可被安全的刪減掉;其中(2, 7)的候選數(shù)少了數(shù)字 6,將使得(8, 7)出現(xiàn)行隱性唯一候選數(shù) 6 ,于是 可用隱性唯一候選數(shù)法來填入下一個解了。
整理一下:
- 當(dāng)某 3 個數(shù)字僅出現(xiàn)在某列的某三個宮格候選數(shù)中時,就可以把這三個宮格的候選數(shù)刪減成該 3 個數(shù)字。
- 同理,當(dāng)某 3 個數(shù)字僅出現(xiàn)在某行的某三個宮格候選數(shù)中時,就可以把這三個宮格的候選數(shù)刪減成該 3 個數(shù)字。
- 當(dāng)然,當(dāng)某 3 個數(shù)字僅出現(xiàn)在某個九宮格的某三個宮格候選數(shù)中時,就可以把這三個宮格的候選數(shù)刪減成該 3 個數(shù)字。
利用“找出某 3 個數(shù)字僅出現(xiàn)在某行、某列或某一個九宮格的某三個宮格候選數(shù)中的情形,進而將這三個 宮格的候選數(shù)刪減成該 3 個數(shù)字”的方法就叫做隱性三鏈數(shù)刪減法(Hidden Triples)。
本法其實為隱性數(shù)對刪除法的推廣,而且還可以繼續(xù)加以推廣:
- 隱性四鏈數(shù)刪減法就是:“找出某 4 個數(shù)字僅出現(xiàn)在某行、某列或某一個九宮格的某四個宮格候選數(shù)中 的情形,進而將這四個宮格的候選數(shù)刪減成該 4 個數(shù)字”的方法。
- 隱性五鏈數(shù)刪減法就是:“找出某 5 個數(shù)字僅出現(xiàn)在某行、某列或某一個九宮格的某五個宮格候選數(shù)中 的情形,進而將這五個宮格的候選數(shù)刪減成該 5 個數(shù)字”的方法。
- ......
如果愿意的話,你確實是可以這樣推廣的,只是,實用上是否有其應(yīng)用的價值或空間呢?
隱性三鏈數(shù)刪減法示例
隱性三鏈數(shù)刪減法一共有 3 種狀況:第一種發(fā)生在行、第二種是發(fā)生在列、第三種則發(fā)生在九宮格。<圖 1> 就是 發(fā)生在列的例子了,其他的情況舉例如下:
<圖 2>
<圖 2> 是隱性三鏈數(shù)刪減發(fā)生在行的例子:圖中第 4 行的數(shù)字 2、4、9 只出現(xiàn)在 (4, 4)、(5, 4)及(6, 4) 這三個宮格的候選數(shù)中,所以可以將三個宮格候選數(shù)中 2、4、9 以外的數(shù)字安全的刪減掉,(4, 4)的候選數(shù)刪減成2、4; (5, 4)的候選數(shù)刪減成2、4、9;(6, 4)的候選數(shù)刪減成 9;出現(xiàn)了唯一候選數(shù)啦!
<圖 3>
<圖 3> 是隱性三鏈數(shù)刪減發(fā)生在九宮格的例子:圖中中央九宮格的數(shù)字 2、5、9 只出現(xiàn)在 (5, 4)、(5, 6)及(6, 4) 這三個宮格的候選數(shù)中,所以可以將三個宮格候選數(shù)中 2、5、9 以外的數(shù)字安全的刪減掉, (5, 4)的候選數(shù)刪減成2、5、9;(5, 6)的候選數(shù)刪減成2、5;(6, 4)的候選數(shù)刪減成 9;出現(xiàn)了唯一候選數(shù)啦!
<圖 4>
像 <圖 1>~<圖 3> 這樣只經(jīng)一次刪減就出現(xiàn)下一個解的情況當(dāng)然不錯了,但有時可沒法這樣順心, <圖 4> 就是一個例子。下一個解將出現(xiàn)在(5, 6) 這個宮格,你能找出該填入什么數(shù)字嗎?
以目前所學(xué)到的方法,要解出下一個解,需要二個步驟:
- 先看中左九宮格吧!由于只剩(5, 1)~(5, 3)這個區(qū)塊尚未填入數(shù)字,所以可用區(qū)塊刪減法將 第 5 列其他區(qū)塊候選數(shù)中的 1、3、4 全部刪減掉,但實際上僅能刪到(5, 4)及(5, 6)候選數(shù)的數(shù)字 4 而已。
- 接下來請觀察第 6 行! 由于數(shù)字 1、4、9 只出現(xiàn)在 (2, 6)、(8, 6)及(9, 6) 這三個宮格的候選數(shù)中 [因為(5, 6)的候選數(shù)在上一步驟中已被刪減為5、8 了 ], 所以可用隱性三鏈數(shù)刪減將三個宮格候選數(shù)中 1、4、9 以外的數(shù)字安全的刪減掉, (2, 6)的候選數(shù)刪減成1、4、9;(9, 6)的候選數(shù)沒變;(8, 6)的候選數(shù)則由 2、4、5、8、9 刪減成 4、9; 由于 5 被刪減掉了,使得(5, 6) 出現(xiàn)了行隱性唯一候選數(shù)5啦!
|
隱性數(shù)對刪減法
|
概說
遇到了高級、困難級的數(shù)獨謎題,使得唯一候選數(shù)法和 隱性唯一候選數(shù)法黔驢技窮的時候,就是各種刪減法上場的時機了。在各種的刪減法中,哪一個要先用 是隨個人之喜好的,并無限制。本頁介紹的當(dāng)然就要以隱性數(shù)對刪減法優(yōu)先??!
<圖 1>
請看<圖 1>的上右九宮格,數(shù)字 8、9 都只出現(xiàn)在(2, 8)和(2, 9)這兩個宮格的候選數(shù)中;這時隱性數(shù)對刪減法 的條件已成立了!這表示上右九宮格的數(shù)字 8 和 9 將只能填到這兩個宮格中,而且:如果數(shù)字 8 將填入(2, 8), 那么(2, 9)就一定要填入數(shù)字 9;反之,如果數(shù)字 9 將填入(2, 8),那么(2, 9)就一定要填入數(shù)字 8; 不論哪一個狀況出現(xiàn),(2, 8)和(2, 9)這兩個宮格的候選數(shù)中若還有其他數(shù)字,全部是多余無用的,因為這 兩個宮格若填入數(shù)字 8、9 以外的數(shù)字,那么上右九宮格的數(shù)字 8 或 9 就將無處可填了。候選數(shù)的意義是 可能填入該宮格的數(shù)字,而這兩個數(shù)字以外的數(shù)字已不可能再用來填入本宮格中了,所以可以毫不考慮的把 它們刪減掉。當(dāng)(2, 8)和(2, 9)這兩個宮格的候選數(shù)都安全的刪減成數(shù)字 8、9 之后,(2, 5)出現(xiàn)了列隱性 唯一候選數(shù) 2 ,于是可用隱性唯一候選數(shù)法來填入下一個解了。
整理一下:
當(dāng)某個數(shù)對僅出現(xiàn)在某個九宮格的某兩個宮格候選數(shù)中時,就可以把這兩個宮格的候選數(shù)刪減成該數(shù)對。
同理,當(dāng)某個數(shù)對僅出現(xiàn)在某列的某兩個宮格候選數(shù)中時,就可以把這兩個宮格的候選數(shù)刪減成該數(shù)對。
當(dāng)然,當(dāng)某個數(shù)對僅出現(xiàn)在某行的某兩個宮格候選數(shù)中時,就可以把這兩個宮格的候選數(shù)刪減成該數(shù)對。
利用“找出某個數(shù)對僅出現(xiàn)在某行、某列或某一個九宮格的某兩個宮格候選數(shù)中的情形,進而將這兩個 宮格的候選數(shù)刪減成該數(shù)對”的方法就叫做隱性數(shù)對刪減法(Hidden Pairs)。
當(dāng)隱性數(shù)對刪減法完成后,通常還可引發(fā)數(shù)對刪減法;以<圖 1>為例,當(dāng)(2, 8)和(2, 9)這兩個宮格的候選數(shù) 都安全的刪減成數(shù)字 8、9 之后,還可利用數(shù)對刪減法把 (2, 1)、(2, 2)、(2, 3) 這三個c格候選數(shù)中的數(shù)字 8 刪減掉。
隱性數(shù)對刪減法示例
隱性數(shù)對刪減法一共有 3 種狀況:第一種發(fā)生在行、第二種是發(fā)生在列、第三種則發(fā)生在九宮格。<圖 1> 就是 發(fā)生在九宮格的例子了,其他的情況舉例如下:
<圖 2>
<圖 2> 是隱性數(shù)對刪減發(fā)生在行的例子:圖中第 2 行的數(shù)對 4、6 只出現(xiàn)在 (3, 2)及(9, 2) 這兩個宮格 的候選數(shù)中,所以可以將(3, 2)及(9, 2)的候選數(shù)安全的刪減成數(shù)對 4、6;而經(jīng)此一刪,(3, 3) 宮格出現(xiàn) 了列隱性唯一候選數(shù) 1 啦!
<圖 3>
<圖 3> 是隱性數(shù)對刪減發(fā)生在列的例子:圖中第 7 列的數(shù)對 4、7 只出現(xiàn)在 (7, 1)及(7, 8) 這兩個宮格 的候選數(shù)中,所以可以將(7, 1)及(7, 8)的候選數(shù)安全的刪減成數(shù)對 4、7;而經(jīng)此一刪,(8, 1) 宮格出現(xiàn) 了行隱性唯一候選數(shù) 2 啦! |
三鏈列刪減法
|
概說
遇到了高級、困難級的數(shù)獨謎題,使得唯一候選數(shù)法和 隱性唯一候選數(shù)法黔驢技窮的時候,就是各種刪減法上場的時機了。在各種的刪減法中,哪一個要先用 是隨個人之喜好的,并無限制。本頁介紹的例子當(dāng)然可用其他刪減法完成解題,且本刪減法成立的條件 和其他方法相比稍嫌繁雜,但為了介紹,在進行解題時還是要以三鏈列刪減法優(yōu)先??!
<圖 1>
請看<圖 1>第 1、4、6 列的數(shù)字 5 ,都只出現(xiàn)在第 1、5、8 行的宮格候選數(shù)中;這時 三鏈列刪減法的條件已成立了!這表示第 1 行、第 5 行及第 8 行的數(shù)字 5 將只能被填到第 1 、4、6 列了,因為:第 1 列的數(shù)字 5 只出現(xiàn)在(1, 1)及(1, 8),所以數(shù)字 5 只能填到這兩個宮格;
- 先假設(shè)第 1 列的數(shù)字 5 將被填到(1, 1),第 1 行就不能再填數(shù)字 5 了,所以第 4 列 的數(shù)字 5 只好填到(4, 5),第 6 列的數(shù)字 5 只好填到(6, 8);
- 另外,假設(shè)第 1 列的數(shù)字 5 將被填到(1, 8),第 8 行就不能再填數(shù)字 5 了,所以第 6 列的數(shù)字 5 只好填到(6, 1)或(6, 5);
- 如果第 6 列的數(shù)字 5 填到(6, 1),第 4 列的數(shù)字 5 就要填到(4, 5);
- 如果第 6 列的數(shù)字 5 填到(6, 5),第 4 列的數(shù)字 5 就要填到(4, 1);
不論哪一種情況發(fā)生,第 1、5、8 行的數(shù)字 5 一定要填在第 1、4、6 列的交點,別的宮格已不能再使用 數(shù)字 5 來填入了,所以若其他宮格的候選數(shù)中還有數(shù)字 5,全部是多余無用的, 可以毫不考慮的把它們刪減掉。于是(5, 1)、(5, 5)、(9, 5)和(1, 8)、(2, 8)這五個宮格候選數(shù)中的 5 都可被安全的刪減掉;其中(9, 5)的候選數(shù)少了數(shù)字 5,將使得(9, 4)出現(xiàn)列隱性唯一候選數(shù) 5 ,于是 可用隱性唯一候選數(shù)法來填入下一個解了。
整理一下:
- 當(dāng)某個數(shù)字在某三列僅出現(xiàn)在相同的三行時,就可以把這三行其他宮格候選數(shù)中的該數(shù)字刪減掉。
- 同理,當(dāng)某個數(shù)字在某三行僅出現(xiàn)在相同的三列時,就可以把這三列其他宮格候選數(shù)中的該數(shù)字刪減掉。
利用“找出某個數(shù)字在某三列僅出現(xiàn)在相同三行的情形,進而將該數(shù)字自這三行其他宮格候選數(shù)中刪減掉”; 或“找出某個數(shù)字在某三行僅出現(xiàn)在相同三列的情形,進而將該數(shù)字自這三列其他宮格候選數(shù)中刪減掉”的方法 就叫做三鏈列刪減法(Swordfish)。
本刪減法其實是矩形頂點刪減法的推廣,如果你愿意的話,還可以繼續(xù)推廣:
- 四鏈列刪減法:利用“找出某個數(shù)字在某四列僅出現(xiàn)在相同四行的情形,進而將該數(shù)字自這四行其他宮格 候選數(shù)中刪減掉”;或“找出某個數(shù)字在某四行僅出現(xiàn)在相同四列的情形,進而將該數(shù)字自這四列其他 宮格候選數(shù)中刪減掉”的方法
- 五鏈列刪減法:利用“找出某個數(shù)字在某五列僅出現(xiàn)在相同五行的情形,進而將該數(shù)字自這五行其他宮格 候選數(shù)中刪減掉”;或“找出某個數(shù)字在某五行僅出現(xiàn)在相同五列的情形,進而將該數(shù)字自這五列其他 宮格候選數(shù)中刪減掉”的方法
- 六鏈列刪減法:...... 不過如果真的這樣做,實際應(yīng)用時,能夠用上的機率大概不多就是了。
遇到了高級、困難級的數(shù)獨謎題,使得唯一候選數(shù)法和 隱性唯一候選數(shù)法黔驢技窮的時候,雖然你可以優(yōu)先使用三鏈列刪減法來尋找下一個解;但大部分的人在 使用刪減法的優(yōu)先順序上,通常都會將三鏈列刪減法排在稍后一點,為什么要如此安排,在實際使用一段時間之后, 相信你自能體會了,但這個方法又是不可或缺的,如果不會運用本刪減法,有很多高級的數(shù)獨謎題就將無解了。
三鏈列刪減法示例
三鏈列刪減法只有 2 種狀況:第一種的刪減發(fā)生在行、第二種的刪減發(fā)生在列。<圖 1> 就是 刪減發(fā)生在行的例子了,第二種的情況舉例如下:
<圖 2>
<圖 2> 是三鏈列刪減發(fā)生在列的例子:圖中第 3、5、8 行的數(shù)字 2 只出現(xiàn)在第 3、4、5 列, 所以可以將數(shù)字 2 自(4, 6)、(5, 6)的候選數(shù)中安全的刪減掉,其中(5, 6) 的候選數(shù)由 2、5 刪減成 5 時,出現(xiàn)唯一候選數(shù)啦! |
區(qū)塊刪減法
|
概說
遇到了高級、困難級的數(shù)獨謎題時,唯一候選數(shù)法和 隱性唯一候選數(shù)法仍有其黔驢技窮的時候;這時就是區(qū)塊刪減法上場的時機了,往后將要介紹的 數(shù)對刪減法(Naked Pairs)、隱性數(shù)對刪減法(Hidden Pairs)、三鏈數(shù)刪減法(Naked Triples)、 隱性三鏈數(shù)刪減法(Hidden Triples) 、矩形頂點刪減法(X-Wing)、三鏈列刪減法(Swordfish)都具有類似的特性:使用這 些技巧的目的僅在刪減候選數(shù)的數(shù)目,刪減之后,還是得使用唯一候選數(shù)法和隱性唯一候選數(shù)法來 找出下一個解并填入數(shù)字的。
當(dāng)使用唯一候選數(shù)法或隱性唯一候選數(shù)法找不出下一個解時,到底該先使用哪一個刪減法呢?隨您高興的用吧! 如果你比較擅長使用數(shù)對刪減法,那就先用數(shù)對刪減法吧!如果你認(rèn)為區(qū)塊刪減法比較好用,那就先用數(shù)對刪減法吧! ......;介紹時總有先后的次序,但并不表示先介紹的就較好用或必須先用哦!只要能達到:“安全刪減掉候選數(shù), 并找出下一個解”的目的,使用哪一種刪減法都是可以的。
<圖 1>
請看<圖 1>,這時若使用唯一候選數(shù)法或隱性唯一候選數(shù)法是找不出下一個解來的!就先來試試區(qū)塊刪減法吧。 請觀察第 9 行:數(shù)字 1 在本行各宮格的候選數(shù)中,是不是僅出現(xiàn)在(1,9)~(3,9)的這一個區(qū)塊中?太好了,區(qū)塊刪減 的條件已有了;因為這表示第 9 行的數(shù)字 1 只能填在(1,9)~(3,9)的這一個區(qū)塊中,而不論填在本區(qū)塊 的哪一個宮格中,上右九宮格的其他宮格將因本九宮格已出現(xiàn)數(shù)字 1,而不得再填入 1,否則就違反數(shù)獨填制的規(guī)則 啦!所以(1, 7)~(3, 7)及(1, 8)~(3, 8)這兩個區(qū)塊的宮格,如果其候選數(shù)中包含有數(shù)字 1,就可以毫不考慮的 把它刪除掉,因為候選數(shù)的意義是可能填入該宮格的數(shù)字,而這個數(shù)字已不可能再用來填入該宮格中了。?。√美?! (1, 7)的候選數(shù)中包含有數(shù)字 1,所以可以把 (1, 7) 的候選數(shù)由 1、6 刪減成 6,于是可用唯一候選數(shù)法來填入 下一個解了。
當(dāng)區(qū)塊刪減法的條件成立時,可別高興得太早,因為很有可能找不到可刪減的數(shù)字,例如:在<圖 1>的第 1 行中, 數(shù)字 2 在本行的各宮格候選數(shù)中,僅出現(xiàn)在(4, 1)~(6, 1)這一個區(qū)塊中,而不論數(shù)字 2 將來會被填到本區(qū)塊 的哪一個宮格中,將使得數(shù)字 2 不得再填入(4, 2)~(6, 2)及(4, 3)~(6, 3)這兩個區(qū)塊中;但請找找看! 這兩個區(qū)塊各宮格的候選數(shù)中全部沒有數(shù)字 2,所以是白忙了一場,條件是成立了,但候選數(shù)并未因此而得到刪減。
整理一下,并為了簡化敘述起見,下面所述的“區(qū)塊候選數(shù)”表示:該區(qū)塊的各個宮格候選數(shù)的總和。例如(1, 3)~(3, 3) 的區(qū)塊候選數(shù)就是(1, 3)的候選數(shù) 4、6、7 及(2, 3)的候選數(shù) 3、4、6 及(3, 3)的候選數(shù) 3、7 的總和: 3、4、6、7 啦!:
- 當(dāng)某一個數(shù)字只出現(xiàn)在某行的某一個區(qū)塊候選數(shù)中時,就可以把該數(shù)字自包含該區(qū)塊的九宮格之其他 區(qū)塊候選數(shù)中刪減掉。
- 同理,當(dāng)某一個數(shù)字只出現(xiàn)在某列的某一個區(qū)塊候選數(shù)中時,就可以把該數(shù)字自包含該區(qū)塊的九宮格之其他 區(qū)塊候選數(shù)中刪減掉。
- 同理,當(dāng)某一個數(shù)字只出現(xiàn)在某個九宮格的某一個區(qū)塊候選數(shù)中時,就可以把該數(shù)字自包含該區(qū)塊的行或列之其他 區(qū)塊候選數(shù)中刪減掉。
利用“找出某一行、某一列或某一個九宮格各個區(qū)塊候選數(shù)中只出現(xiàn)一次的數(shù)字來,并將該數(shù)字自包含該區(qū)塊的另一個 行、列或九宮格的其他區(qū)塊候選數(shù)中刪減掉”的方法就叫做區(qū)塊刪減法 (Locked Candidates, Single Sector Candidates)。
區(qū)塊刪減法示例
區(qū)塊刪減法一共有 4 種狀況:第一種是發(fā)生在行而去刪減九宮格、第二種是發(fā)生在列而去刪減九宮格、 第三種是發(fā)生在九宮格而去刪減行、第四種是發(fā)生在九宮格而去刪減列。
<圖 1> 就是發(fā)生在行而去刪減九宮格的例子了,其他的情況舉例如下:
<圖 2>
<圖 2> 是發(fā)生在列而去刪減九宮格的例子:因為第 3 列的數(shù)字 6 只出現(xiàn)在 (3, 1)~(3, 3) 這一個區(qū)塊, 所以可以將上左九宮格的另兩個區(qū)塊 (1, 1)~(1, 3)、(2, 1)~(2, 3) 候選數(shù)中的數(shù)字 6 安全的刪減掉; 于是(1, 1)的候選數(shù) 2、6 將被刪減成 2,出現(xiàn)了唯一候選數(shù)啦!
<圖 3>
<圖 3> 是發(fā)生在九宮格而去刪減列的例子:因為上右九宮格的數(shù)字 5 只出現(xiàn)在 (3, 7)~(3, 9) 這一個區(qū)塊, 所以可以將第 3 列的另兩個區(qū)塊 (3, 1)~(3, 3)、(3, 4)~(3, 6) 候選數(shù)中的數(shù)字 5 安全的刪減掉; 于是(3, 3)的候選數(shù) 5、9 將被刪減成 9,出現(xiàn)了唯一候選數(shù)啦!
<圖 4>
<圖 4> 是發(fā)生在九宮格而去刪減行的例子:因為中央九宮格的數(shù)字 1 只出現(xiàn)在 (4, 5)~(6, 5) 這一個區(qū)塊, 所以可以將第 5 行的另兩個區(qū)塊 (1, 5)~(3, 5)、(7, 5)~(9, 5) 候選數(shù)中的數(shù)字 1 安全的刪減掉; 于是(8, 5)的候選數(shù) 1、3、7、8 將被刪減成 3、7、8;同理,中央九宮格的數(shù)字 7、8 都只出現(xiàn)在 (4, 5)~(6, 6) 這一個區(qū)塊,所以可以將第 5 行的另兩個區(qū)塊 (1, 5)~(3, 5)、(7, 5)~(9, 5) 候選數(shù)中 的數(shù)字 7、8 都安全的刪減掉;于是(8, 5)的候選數(shù) 3、7、8 將再度被刪減成 3;出現(xiàn)了唯一候選數(shù)啦!
像<圖 1>~<圖 3>這樣,只做一次區(qū)塊刪減就找到下一個解的情況固然是不錯,但有時并沒有那么順心, 像<圖 4>就需要刪減三次才得到下一個解,不過那還算好的了,因為三次的刪減都恰好發(fā)生在同一個區(qū)塊中, 請看下面發(fā)生在不同區(qū)塊的情形吧!
<圖 5>
<圖 5> 中的(4, 3)將可利用區(qū)塊刪減法得出下一個解,你能夠不看下面的解答,自己找出來嗎?試試!
也許你已經(jīng)找出答案了,恭喜!也許你還找不出答案,那也沒關(guān)系,人有失手,馬有失蹄,總有腦袋被漿糊 糊住而一時失誤的時候,請看答案吧:因為第 8 列的數(shù)字 2 只出現(xiàn)在 (8, 1)~(8, 3) 這一個區(qū)塊, 所以可以將下左九宮格的另兩個區(qū)塊 (7, 1)~(7, 3)、(9, 1)~(9, 3) 候選數(shù)中的數(shù)字 2 安全的刪減掉; 刪減之后的結(jié)果如<圖 6>。
<圖 6>
接下來,因為第 3 行的數(shù)字 2 只出現(xiàn)在 (4, 3)~(6, 3) 這一個區(qū)塊,所以可以將中左九宮格的另兩個區(qū)塊 (4, 1)~(6, 1)、(4, 2)~(6, 2) 候選數(shù)中的數(shù)字 2 安全的刪減掉;刪減之后的結(jié)果如<圖 7>。
<圖 7>
哈!哈!看出來了嗎?(4, 3)已出現(xiàn)了列隱性唯一候選數(shù)2啦! |
|
關(guān)鍵數(shù)刪減法
|
概說
遇到了高級、困難級的數(shù)獨謎題,使得唯一候選數(shù)法和隱性唯一候選數(shù)法黔驢技窮的時候,就是各種刪減法上場的時機了。在各種的刪減法中,哪一個要先用是隨個人之喜好的,并無限制。本頁介紹的例子雖然可能可以使用其他刪減法完成解題,但在大部份的情況下是無可取代的,不過本刪減法成立的條件和其他方法相比稍嫌繁雜,所以一般在使用時,均將其優(yōu)先順序 放在后面,只在不得已時才用之!
<圖 1>
請看<圖 1>,此時使用以往所提及的:數(shù)對刪減法、區(qū)塊刪減法、隱性數(shù)對刪減法、三鏈數(shù)刪減法、 隱性三鏈數(shù)刪減法、矩形頂點刪減法、三鏈列刪減法...等各式刪減法都已找不到下一個解了,這才是 關(guān)鍵數(shù)刪減法(Colors, Colouring)最好的上場時機。
某一個數(shù)字在某一行、某一列或者某一個九宮格的各宮格候選數(shù)中恰出現(xiàn)兩次時,我們說在 這一行、這一列或者這一個九宮格中有了一個關(guān)鍵數(shù)。由于使用本刪減法的時機是在數(shù)獨填制的中后期, 所以擁有同一個關(guān)鍵數(shù)的行列或九宮格通常不止一處,而且環(huán)環(huán)相扣,使得候選數(shù)中包含該關(guān)鍵數(shù)的宮格 形成涇渭分明的兩大陣營;<圖 2> 和 <圖 1>是完全相同的數(shù)獨殘局,但只顯示候選數(shù) 4 的情形:
<圖 2>
在 <圖 2> 中,第一列的數(shù)字 4 僅出現(xiàn)在 (1, 1) 及 (1, 5),是本列的關(guān)鍵數(shù),此時,若數(shù)字 4 應(yīng)填入 (1, 1),則 (1, 5) 就不能再填入數(shù)字 4;反之,若數(shù)字 4 應(yīng)填入 (1, 5),則 (1, 1) 就不能再填入數(shù)字 4 了; 雖然我們還不知道哪一個宮格應(yīng)填入數(shù)字 4,但卻可以利用關(guān)鍵數(shù)的這一個特性,將待填的部分宮格區(qū)分成兩組, 只要其中的一組宮格應(yīng)填入數(shù)字 4 ,另一組宮格就不可能再填入數(shù)字 4 。<圖 2> 中底色為粉紅及淺藍的兩組宮格, 就具有這樣的性質(zhì)。
接下來,我們就可以根據(jù)這兩組宮格的分布情形,做一些確切的判定:
- 當(dāng)在底色為淺藍的宮格中填入數(shù)字 4 時,并無任何不妥!
- 若在底色為粉紅的宮格中填入數(shù)字 4 時,則第 7 列或第 7 行都將出現(xiàn)兩個數(shù)字 4,這是違反填制規(guī)則的。
所以所有底色為粉紅的宮格都不可能填入數(shù)字 4,這些宮格候選數(shù)中的數(shù)字 4,全部都可以刪減掉!回到 <圖 1>,我們可發(fā)現(xiàn),進行刪減之后,下一個解的尋找根本就不成任何問題了。
大部分情況下,利用行列及九宮格的關(guān)鍵數(shù)將相關(guān)宮格區(qū)分為兩組后,并不一定可找出上述的矛盾狀況, 而確切的據(jù)以判定某一組宮格可進行候選數(shù)的刪減,例如<圖 3>就是一個例子:由第 9 列的關(guān)鍵數(shù) 6 所引發(fā)區(qū)分的兩組宮格,不論將數(shù)字 6 填到粉紅或淺藍為底色的宮格中,都是不會產(chǎn)生矛盾的。

<圖 3>
不過<圖 3>卻展示了關(guān)鍵數(shù)刪減法的另一種刪減狀況;請看第 1 列中的 (1, 5) 及 (1, 8),它們有什么 特殊之處呢?尤怪居然要用淺綠的底色來標(biāo)示!
哈!哈!相信你已看出來了,在這兩個宮格的同一行上,都有兩個不同底色的宮格存在,這代表:不論最后 數(shù)字 6 應(yīng)填到哪一組底色的宮格中,因為本行的數(shù)字 6 已被填入了,所以這兩個宮格都不可能再填入數(shù)字 6 了,因此這兩個宮格的候選數(shù) 6 都可被安全的刪減掉!
為了更清楚的說明這類的刪減,假設(shè)有某個數(shù)獨殘局的數(shù)候選數(shù) 1 分布如<圖 4> :

<圖 4>
利用<圖 4>第 1 列中的關(guān)鍵數(shù) 1,可將部分宮格區(qū)分為兩組獨立的宮格,分別以粉紅及淺藍為底色來標(biāo)示; 只要其中的一組宮格被填入數(shù)字 1,另一組宮格就不可能再填入數(shù)字 1。雖然在本圖中的任一組宮格中填入 數(shù)字 1 都不會產(chǎn)生矛盾,但是仍可以利用這些宮格的分布,對其他宮格進行刪減。
- 先看 (3, 7)、(3, 8)、(3, 9),因為上右九宮格中己擁有粉紅及淺藍為底色的宮格各一個,表示不論 數(shù)字 1 應(yīng)填到哪一組底色的宮格中,因為本九宮格中的數(shù)字 1 已被填入了,所以其他宮格都不能再 使用數(shù)字 1 了,因此這三個宮格的候選數(shù) 1 都可被安全的刪減掉!
- 再看 (4, 9),因為同行的(2, 9)有一個粉紅底色的宮格,同列的(4, 4)又有一個淺藍底色的宮格,所以 不論數(shù)字 1 應(yīng)填到哪一組底色的宮格中,因為同一個行、列中的數(shù)字 1 已被填入了,所以本宮格就不能 再使用數(shù)字 1 了;這個宮格的候選數(shù) 1 可安全的刪減掉!
- 最后來看看 (4, 1)、(5, 1),因為同行中己擁有粉紅及淺藍為底色的宮格各一個,所以這兩個宮格的 候選數(shù) 1 都可安全的刪減掉!
利用“以關(guān)鍵數(shù)的關(guān)系找出矛盾的組合,或者找出確切可進行刪減的宮格,進而將該數(shù)字自宮格候選數(shù)中刪減掉” 的方法就叫做關(guān)鍵數(shù)刪減法(Colors, Colouring)。由于在說明本法的分組狀況時, 以顏色來區(qū)分是最清楚明了的,所以外國人就以 “colors 顏色”為名,也是十分傳神的。
|
矩形頂點刪減法
|
概說
遇到了高級、困難級的數(shù)獨謎題,使得唯一候選數(shù)法和 隱性唯一候選數(shù)法黔驢技窮的時候,就是各種刪減法上場的時機了。在各種的刪減法中,哪一個要先用 是隨個人之喜好的,并無限制。本頁介紹的例子當(dāng)然可用其他刪減法完成解題,且本刪減法成立的條件 和其他方法相比稍嫌繁雜,但為了介紹,在進行解題時還是要以矩形頂點刪減法優(yōu)先??!
<圖 1>
請看<圖 1>的第 1 列及第 9 列,數(shù)字 8 都只出現(xiàn)在第 5、8 行的宮格候選數(shù)中;這時 矩形頂點刪減法的條件已成立了!這表示第 5 行及第 8 行的數(shù)字 8 將只能被填到第 1 列及 第 9 列了,因為:第 1 列的數(shù)字 8 只出現(xiàn)在(1, 5)及(1, 8),所以數(shù)字 8 只能填到這兩個宮格; 同樣的,第 9 列的數(shù)字 8 只出現(xiàn)在(9, 5)及(9, 8),所以數(shù)字 8 也只能填到這兩個宮格; 先假設(shè)第 1 列的數(shù)字 8 將被填到(1, 5),第 5 行就不能再填數(shù)字 8 了,所以第 9 列的數(shù)字 8 只好 填到(9, 8);另外,假設(shè)第 1 列的數(shù)字 8 將被填到(1, 8),第 8 行就不能再填數(shù)字 8 了,所以第 9 列的數(shù)字 8 只好填到(9, 5);不論哪一種情況發(fā)生,第 5 行及第 8 行的數(shù)字 8 都已被填入,別的 宮格已不能再使用數(shù)字 8 來填入了,所以若其他宮格的候選數(shù)中還有數(shù)字 8,全部是多余無用的, 可以毫不考慮的把它們刪減掉。于是(3, 5)、(6, 5)和(3, 8)、(7, 8)這四個宮格候選數(shù)中的 8 都可被安全的刪減掉;其中(6, 5)的候選數(shù)少了數(shù)字 8,將使得(6, 6)出現(xiàn)列隱性唯一候選數(shù) 8 ,于是 可用隱性唯一候選數(shù)法來填入下一個解了。
整理一下:
- 當(dāng)某個數(shù)字在某兩列僅出現(xiàn)在相同的兩行時,就可以把這兩行其他宮格候選數(shù)中的該數(shù)字刪減掉。
- 同理,當(dāng)某個數(shù)字在某兩行僅出現(xiàn)在相同的兩列時,就可以把這兩列其他宮格候選數(shù)中的該數(shù)字刪減掉。
利用“找出某個數(shù)字在某兩列僅出現(xiàn)在相同兩行的情形,進而將該數(shù)字自這兩行其他宮格候選數(shù)中刪減掉”; 或“找出某個數(shù)字在某兩行僅出現(xiàn)在相同兩列的情形,進而將該數(shù)字自這兩列其他宮格候選數(shù)中刪減掉”的方法 就叫做矩形頂點刪減法(X-Wing)。因為本刪減法的條件成立時,關(guān)鍵的數(shù)字 8 所處的宮格在數(shù)獨方陣上看來,剛好就在一個矩形的頂點。
遇到了高級、困難級的數(shù)獨謎題,使得唯一候選數(shù)法和 隱性唯一候選數(shù)法黔驢技窮的時候,雖然你可以優(yōu)先使用矩形頂點刪減法來尋找下一個解;但大部分的人在 使用刪減法的優(yōu)先順序上,通常都會將矩形頂點刪減法排在稍后一點,為什么要如此安排,在實際使用一段時間之后, 相信你自能體會了,但這個方法又是不可或缺的,如果不會運用本刪減法,有很多高級的數(shù)獨謎題就將無解了。
矩形頂點刪減法示例
矩形頂點刪減法只有 2 種狀況:第一種的刪減發(fā)生在行、第二種的刪減發(fā)生在列。<圖 1> 就是 刪減發(fā)生在行的例子了,第二種的情況舉例如下:
<圖 2>
<圖 2> 是矩形頂點刪減發(fā)生在列的例子:圖中第 2 行、第 8 行的數(shù)字 3 只出現(xiàn)在第 1 列及第 2 列, 所以可以將數(shù)字 3 自(1, 3)、(1, 5)及(2, 1)、(2, 4)、(2, 5)的候選數(shù)中安全的刪減掉,其中(2, 4) 的候選數(shù)由 2、3、4、6 刪減成 2、4、6 時;(3, 4)將出現(xiàn)隱性唯一候選數(shù) 3 啦!
<圖 3>
<圖 3> 也是一個刪減法綜合運用的例子。在(1, 8)中將可找到下一個解,你能找出來嗎?
- 因為上中九宮格的數(shù)字 1 只發(fā)生在(2, 4)~(2, 6) 這一個區(qū)塊,所以可以利用區(qū)塊刪減法 把(2, 7)~(2, 9)候選數(shù)中的數(shù)字 1 安全的刪減掉。
- 因為第 1 行及第 7 行的數(shù)字 1 只出現(xiàn)在第 4 列及第 9 列,所以可以利用矩形頂點刪減法 把(4, 3)及(9, 6)、(9, 8)、(9, 9)候選數(shù)中的數(shù)字 1 安全的刪減掉。
經(jīng)過以上刪減之后,(1, 8)出現(xiàn)行隱性唯一候選數(shù) 1 啦! |
轉(zhuǎn)發(fā)至微博
|