第一章3

6數獨候選數法解題技巧關鍵數刪減法

遇到了高級、困難級的數獨謎題,使得唯一候選數法和隱性唯一候選數法黔驢技窮的時候,就是各種刪減法上場的時機了。在各種的刪減法中,哪一個要先用是隨個人之喜好的,並無限製。本頁介紹的例子雖然可能可以使用其它刪減法完成解題,但在大部份的情況 下是無可取代的,不過本刪減法成立的條件和其它方法相比稍嫌繁雜,所以一般在使用時,均將其優先級放在後麵,隻在不得已時才用之。

(圖1)請看(圖1),某一個數字在某一行、某一列或者某一個九宮格的各宮格候選數中恰出現兩次時,我們說在這一行、這一列或者這一個九宮格中有了一個關鍵數。由於使用本刪減法的時機是在數獨填製的中後期,所以擁有同一個關鍵數的行列或九宮格通常不止一處,而且環環相扣,使得候選數中包含該關鍵數的宮格 形成涇渭分明的兩大陣營;(圖2)和(圖1)是完全相同的數獨殘局,但隻顯示候選數4的情形:

(圖2)在(圖2)中,第一列的數字4僅出現在(1,1)及(1,5),是本列的關鍵數,此時,若數字4應填入(1,1),則(1,5)就不能再填入數字4;反之,若數字4應填入(1,5),則(1,1)就不能再填入數字4了;雖然我們還不知道哪一個宮格應填入數字4,但卻可以利用關鍵數的這一個特性,將待填的部分宮格區分成兩組,隻要其中的一組宮格應填入數字4,另一組宮格就不可能再填入數字4。(圖2)中底色為粉紅及淺藍的兩組宮格, 就具有這樣的性質。

接下來,我們就可以根據這兩組宮格的分布情形,做一些確切的判定:首先,當在底色為淺藍的宮格中填入數字4時,並無任何不妥。然後,若在底色為粉紅的宮格中填入數字4時,則第7列或第7行都將出現兩個數字4,這是違反填製規則的。

所以所有底色為粉紅的宮格都不可能填入數字4,這些宮格候選數中的數字4,全部都可以刪減掉!回到(圖1),我們可發現,進行刪減之後,下一個解的尋找根本就不成任何問題了。

大部分情況下,利用行列及九宮格的關鍵數將相關宮格區分為兩組後,並不一定可找出上述的矛盾狀況,而確切的據以判定某一組宮格可進行候選數的刪減,例如(圖3)就是一個例子:由第9列的關鍵數6所引發區分的兩組宮格,不論將數字 6 填到粉紅或淺藍為底色的宮格中,都是不會產生矛盾的。

(圖3)不過(圖3)卻展示了關鍵數刪減法的另一種刪減狀況,請看第1列中的(1,5)及(1,8),它們有什麼特殊之處呢?尤怪居然要用淺綠的底色來標示。

相信你已看出來了,在這兩個宮格的同一行上,都有兩個不同底色的宮格存在,這代表:不論最後數字6應填到哪一組底色的宮格中,因為本行的數字6已被填入了,所以這兩個宮格都不可能再填入數字6了,因此這兩個宮格的候選數6都可被安全的刪減掉。

為了更清楚的說明這類的刪減,假設有某個數獨殘局的數候選數1分布如(圖4):

(圖4)利用(圖4)第1列中的關鍵數1,可將部分宮格區分為兩組獨立的宮格,分別以粉紅及淺藍為底色來標示;隻要其中的一組宮格被填入數字1,另一組宮格就不可能再填入數字1。雖然在本圖中的任一組宮格中填入數字1都不會產生矛盾,但是仍可以利用這些宮格的分布,對其它宮格進行刪減。

首先,看(3,7)、(3,8)、(3,9),因為上右九宮格中己擁有粉紅及淺藍為底色的宮格各一個,表示不論數字1應填到哪一組底色的宮格中,因為本九宮格中的數字1已被填入了,所以其它宮格都不能再 使用數字1了,因此這三個宮格的候選數1都可被安全的刪減掉!

然後,看(4,9),因為同行的(2,9)有一個粉紅底色的宮格,同列的(4,4)又有一個淺藍底色的宮格,所以不論數字1應填到哪一組底色的宮格中,因為同一個行、列中的數字1已被填入了,所以本宮格就不能 再使用數字1了;這個宮格的候選數1可安全的刪減掉。

最後,來看看(4,1)、(5,1),因為同行中己擁有粉紅及淺藍為底色的宮格各一個,所以這兩個宮格的候選數1都可安全的刪減掉。

利用“以關鍵數的關係找出矛盾的組合,或者找出確切可進行刪減的宮格,進而將該數字自宮格候選數中刪減掉”的方法就叫做關鍵數刪減法。由於在說明本法的分組狀況時,以顏色來區分是最清楚明了的,所以外國人就以“顏色”為名,也是十分傳神的。

三鏈列刪減法

(圖1)請看(圖1)第1、4、6列的數字5,都隻出現在第1、5、8行的宮格候選數中;這時三鏈列刪減法的條件已成立了。這表示第1行、第5行及第8行的數字5將隻能被填到第1、4、6列了,因為:第1列的數字5隻出現在(1,1)及(1,8),所以數字5隻能填到這兩個宮格。

首先,假設第1列的數字5將被填到(1,1),第1行就不能再填數字5了,所以第4列的數字5隻好填到(4,5),第6列的數字5隻好填到(6,8);

然後,假設第1列的數字5將被填到(1,8),第8行就不能再填數字5了,所以第6列的數字5隻好填到(6,1)或(6,5);

如果第6列的數字5填到(6,1),第4列的數字5就要填到(4,5);

如果第6列的數字5填到(6,5),第4列的數字5就要填到(4,1);

不論哪一種情況發生,第1、5、8 行的數字5一定要填在第1、4、6列的交點,別的宮格已不能再使用數字5來填入了,所以若其它宮格的候選數中還有數字5,全部是多餘無用的,可以毫不考慮的把它們刪減掉。

於是(5,1)、(5,5)、(9,5)和(1,8)、(2,8)這五個宮格候選數中的5都可被安全的刪減掉;其中(9,5)的候選數少了數字5,將使得(9,4)出現列隱性唯一候選數5,於是,可用隱性唯一候選數法來填入下一個解了。

整理一下:第一,當某個數字在某三列僅出現在相同的三行時,就可以把這三行其它宮格候選數中的該數字刪減掉。第二,同理,當某個數字在某三行僅出現在相同的三列時,就可以把這三列其它宮格候選數中的該數字刪減掉。

利用“找出某個數字在某三列僅出現在相同三行的情形,進而將該數字自這三行其它宮格候選數中刪減掉”;或“找出某個數字在某三行僅出現在相同三列的情形,進而將該數字自這三列其它宮格候選數中刪減掉”的方法,就叫做三鏈列刪減法。

本刪減法其實是矩形頂點刪減法的推廣,如果你願意的話,還可以繼續推廣:

(1)四鏈列刪減法 利用“找出某個數字在某四列僅出現在相同四行的情形,進而將該數字自這四行其它宮格候選數中刪減掉”;或“找出某個數字在某四行僅出現在相同四列的情形,進而將該數字自這四列其它 宮格候選數中刪減掉”的方法。

(2)五鏈列刪減法 利用“找出某個數字在某五列僅出現在相同五行的情形,進而將該數字自這五行其它宮格 候選數中刪減掉”;或“找出某個數字在某五行僅出現在相同五列的情形,進而將該數字自這五列其它宮格候選數中刪減掉”的方法

(3)六鏈列刪減法 不過如果真的這樣做,實際應用時,能夠用上的機率大概不多就是了。

遇到了高級、困難級的數獨謎題,使得唯一候選數法和隱性唯一候選數法黔驢技窮的時候,雖然你可以優先使用三鏈列刪減法來尋找下一個解;但大部分的人在使用刪減法的優先級上,通常都會將三鏈列刪減法排在稍後一點,為什麼要如此安排,在實際使用一段時間之後,相信你自能體會了,但這個方法又是不可或缺的,如果不會運用本刪減法,有很多高級的數獨謎題就將無解了。

三鏈列刪減法隻有兩種狀況,第一種的刪減發生在行、第二種的刪減發生在列。(圖1)就是刪減發生在行的例子了,第二種的情況舉例如下: (圖2)(圖2)是三鏈列刪減發生在列的例子,圖中第3、5、8行的數字2隻出現在第3、4、5列,所以可以將數字2自(4,6)、(5,6)的候選數中安全的刪減掉,其中(5,6)的候選數由 2、5刪減成5時,出現唯一候選數啦。

矩形頂點刪減法

(圖1)請看(圖1)的第1列及第9列,數字8都隻出現在第5、8行的宮格候選數中;這時,數字8在此二列的填入隻有下列兩種情形:

首先,第1列的數字8若填到(1,5)中、則第9列的數字 8 就隻能填到(9,8)了。

然後,第1列的數字8若填到(1,8)中、則第9列的數字8就隻能填到(9,5)了。

不論哪一種情況發生,都表示第5行及第8行的數字8已有歸屬了,所以(2,5)、(8,5)及(2,8)、(8,8)都不能再填入數字8了,可以毫不考慮的自它們的候選數中把數字8刪減掉,於是(3,5)、(6,5)和(3,8)、(7,8)這四個宮格候選數中的8都可被安全的刪減掉;而當(6,5)的候選數少了數字8後,將使得(6,6)出現列隱性唯一候選數8,於是可用隱性唯一候選數法來填入下一個解了。

整理一下:第一,當某個數字在某兩列僅出現在相同的兩行時,就可以把這兩行其它宮格候選數中的該數字刪減掉。第二,同理,當某個數字在某兩行僅出現在相同的兩列時,就可以把這兩列其它宮格候選數中的該數字刪減掉。

利用“找出某個數字在某兩列僅出現在相同兩行的情形,進而將該數字自這兩行其它宮格候選數中刪減掉”;或“找出某個數字在某兩行僅出現在相同兩列的情形,進而將該數字自這兩列其它宮格候選數中刪減掉”的方法,就叫做矩形頂點刪減法。因為本刪減法的條件成立時,關鍵的數字8所處的宮格在數獨方陣上看來,剛好就在一個矩形的頂點。

遇到了高級、困難級的數獨謎題,使得唯一候選數法和隱性唯一候選數法黔驢技窮的時候,雖然你可以優先使用矩形頂點刪減法來尋找下一個解;但大部分的人在使用刪減法的優先級上,通常都會將矩形頂點刪減法排在稍後一點,為什麼要如此安排,在實際使用一段時間之後,相信你自能體會了,但這個方法又是不可或缺的,如果不會運用本刪減法,有很多高級的數獨謎題就將無解了。

矩形頂點刪減法隻有兩種狀況:第一種的刪減發生在行、第二種的刪減發生在列。(圖1)就是刪減發生在行的例子了,第二種的情況舉例如下:

(圖2)(圖2)是矩形頂點刪減發生在列的例子:圖中第2行、第8行的數字3隻出現在第1列及第2列,所以數字3在第2行及第8行的填入隻有下列兩種情況:

首先,第2行的數字3若填到 (1,2)中,則第8行的數字3就隻能填到(2,8)了。

然後,第2行的數字3若填到 (2,2)中、則第8行的數字3就隻能填到(1,8)了。

不論下列哪一種情況發生,都表示第1列及第2列的數字3已有歸屬,這兩列其它的宮格將不能再填入數字3了,所以可以將數字3自(1,3)、(1,5)及(2,1)、(2,4)、(2,5)的候選數中安全的刪減掉,而當(2, 4)的候選數由 2、3、4、6刪減成2、4、6時;(3,4)將出現行隱性唯一候選數3啦。

(圖3)(圖3)也是一個刪減法綜合運用的例子,在(1,8)中將可找到下一個解,你能找出來嗎?

第一,因為上中九宮格的數字1隻發生在(2,4)、(2,6)這一個區塊,所以可以利用區塊刪減法把(2,7)、(2,9)候選數中的數字1安全的刪減掉。

第二,因為第1行及第7行的數字1隻出現在第4列及第9列,所以可以利用矩形頂點刪減法把(4,3)及(9,6)、(9,8)、(9,9)候選數中的數字1安全的刪減掉。