前往
大廳
主題

【日常】數獨解法3

愛天使亞夜 | 2021-04-29 18:30:04 | 巴幣 128 | 人氣 574

各位好這裡是亞夜。
今天繼續來分享一下數獨的高階解法。

所謂的高階解法的定義呢,
敝人是這樣下的:

出現無法利用行、列、宮的既有數字來排除候選數並得到解答的時候,
用來突破僵局刪除多餘候選數直到找出解答的方式。

面對唯一解的數獨題時,
在陷入僵局時使用試誤法式絕對可行的,
只是這種方法很浪費時間也很不推薦使用,
這是真的沒步的時候才會用的方式。
大多數的情況下,
還是不推薦使用試誤法,
畢竟用踹的那誰都能踹出正確答案來,
那又如何能自稱高手呢?

【例題】



首先先看數字1:
首先當然還是先做筆記啦!
按照基本定義,
同一個行、列、宮裡面,
一個數字只能出現一次,
那麼反過來說,
在出現過某個數字的行、列、宮裡其他的格子裡,
絕對不可能出現該數字。
因此我們可以把數字1所在的位置延伸出去的行、列、宮都排除數字1的可能性,
只在剩下的區域填入數字1的候選。
此時第二宮藍框的位置裡,
雖然不能確定數字1在哪個位置,
但可以確定第八格或第九格必然有一格是1,
這意味著第三行的1必然只會出現在那兩格之一,
因此第三行的第八、九兩格可以將候選數1排除,
如此一來便能確定第三宮的數字1一定是在第三格。


接著看數字2:

同樣的排除方式,
很快地就能找到新的數字。
接著當然就將2的候選位數都填上:


接著看數字3:


接著看數字4:

按照相同法則將候選數填上,
不過這裡第一宮出現了今天第一組數組:24。
如果同一行、同一列或同一宮裡面的n個格子的候選數完全只由n個數字所組成,
或者同一行、同一列或同一宮裡面的n個候選數完全只在n個格子裡面的話,
那麼就能保證這n個數字必然只出現在這n個格子裡面,
同時其他數字必不在這n個格子裡面。
這裡就發生了正個情況:
第一宮的24兩個數字都只出現在第七、九兩格,
那不論哪一個是2,
另一個必然是4對吧?
因此這兩格必然都只會是24而不可能是其他數字,
故我們可以直接把3排除。
之後看其他候選數時也能直接不考慮這兩格了。


接著看數字5:

同樣的方式填入候選數,
注意避開已經被數組鎖死的格子(紅格)。

接著看數字6:


接著看數字7:

避開第一宮的24數組後,
第七宮直接就能找到7的位置了。
而因為那個7的位置同時也是第七行唯二的2的位置,
因此馬上就能確定第七行2的位置是在第六格:
然後就是一連串的填2:


到這裡就沒有可以再解的了,
那麼就繼續往8看下去:

這裡又出現一個數組:
第九宮的58數組,
所以第九格的候選數4可以消去。

接著看數字9:

都已經看到數字9了還沒有任何候選數,
就表示數字1~8都不能填,
那擺明空格就只能填數字9了對吧?

把候選數9一個一個填上去,
發現第三宮9的位置可以確定,
然後再繼續把確定的數字填上:


到這裡,
接著就是真正的戰場了。
現在這裡有兩種解法,
但會導向同一種結果:

解法1:
望向第七宮的下半部分,
藍框的三格都只有189,
因此可以確定189必須分別位於這三格。
那麼此時就能把同行、同宮中的189通通消除,
並且確定第九行第九格是5,
併再次消除候選數5。
同時第九宮的8也確定了。

解法2:
望向第八宮的15數組(藍框),
刪去相關範圍(紅框)內的15,
同時確定第八行第九格為8,
進而消除候選數8。
同時第九宮第九格也會確定為5。
兩種解法,
會導向同一種結果:


 
接著注意第二宮的68數組,
刪去對應範圍內的68:


接著出現35數組:


接著就確定第三宮3的位置了。
接著第七列的68數組可以確定5的位置:


確定好5的位置後看第一宮的78數組,
刪除候選數8以後確定第一行8的位置後,
又有一連串的數字可以解出:


繼續延伸:

 

止步於此。


接著第四列還有一組數組:467,
這樣我們就還能再刪一些候選數掉。


這一組數組比較特殊:
第五列的67只出現在這兩格,
因此這兩格必定是67,
所以可以刪去紅框的候選數9。


接著看上圖的部分,
紅框框起來的部分是對稱的而且都由1359所構成,
除了綠框的位置有一個8以外。
如果綠框位置不是8,
那麼很明顯的這個數獨就會出現重解,
因為兩列都是雙值而且可以彼此交換而不影響結果對吧?
所以綠框位置必然是8才能避免矛盾。


到這裡敝人就撞車了,
找不到可以額外再消去數字的方法。
如果有人可以幫忙解難,
敝人在這裡先謝謝你。

接下來只好使用大絕招:試誤法。

試誤法是這樣,
簡單說就是猜。
如果你一猜即對,
那就是答案;
如果你猜錯,
就代表能消去那個數字。
而,
為了節省猜的時間,
我們最好挑一個猜下去就能一翻兩瞪眼的格子下手,
也就是找一個跟周圍有強相關又不對稱又只有雙值的格子下手。

敝人是這樣選的:
這部分因為形成了一個迴路:
對稱而且都有2346,
很大機率會在這裡直接斷掉線索,
那會導致會出現要猜第二次的情況發生,
因此敝人會傾向於去尋找右半部的雙值格子。


既然要從右邊的格子開始猜,
就選擇第三宮的第四格開始。
假設6是錯的,
那這樣一步一步推敲後就會在最後在第四宮出現矛盾,
因此我們猜錯了,
8才是錯的。

解到這邊基本上就是解完了。
除了藍色格子以外所有格子都是雙值,
這時候我們注意那個藍色格子。
假設藍色格子的數字不是4,
那你仔細看每一行每一列,
他們的數字一定都是兩兩成對存在的。
這什麼意思呢?
因為是兩兩成對,
就代表可以互換。
如果這個題目無解當然就無解,
但如果有解,
因為可以互換,
便不具備唯一性,
那就與原假設不符。
換句話說,
為了滿足唯一性,
藍色格子必須是4,
這樣才能破壞兩兩成對的形式。


於是乎答案就是這麼一回事了。


正解。

當然你可以去試試看,
如果剛剛假設的那格不是4會怎樣。
基本上最後一定會矛盾,
不信來打賭?

沒有靠真實技巧解出來,
所以算挑戰失敗。
罰自己被流放國外(咦?
封面圖片:《王冠之心》:見習女僕
送禮物贊助創作者 !
0
留言

創作回應

Sanvendi
更正,綠線這一行最後那一格
2021-04-29 19:23:37
Sanvendi
http://www.52rd.com/Blog/Detail_RD.Blog_weng3309_72702.html
2021-04-29 19:25:47
愛天使亞夜
感謝
2021-04-29 19:48:22
愛天使亞夜
不對啊,Zwing只能保證「三格的共同影響格」,黃格顯然沒有影響到最後一格啊
2021-04-29 19:53:45
Sanvendi
https://truth.bahamut.com.tw/s01/202104/ff1686c34ae5fb5c2fc28b88726f1469.JPG

先用這方法刪去這兩個黑格的6

https://truth.bahamut.com.tw/s01/202104/60ac1bd2188ee18d38a5e99acc9167fa.JPG

再用這方法刪去這兩個黑格的4

https://truth.bahamut.com.tw/s01/202104/6aad0232e0c28c607a0ab2e2e38d00c5.JPG

得知左黑格應該是8,右黑格是7 ?
2021-04-29 20:48:02
愛天使亞夜
你的黑格還是沒有同時被紅黃藍三格同時影響。Zwing排除Z的先決條件必須是XY-XZ-XYZ三格同時影響的範圍才可以排除掉Z。你的紅格影響不到黑格所以不能用這方法。
敝人確實對Zwing不熟,但Zwing能使用的場合真的很少,而且Zwing能用的場合大體上都可以被其他方式消除掉。
2021-04-29 21:21:50
Sanvendi
更正,左黑格變成8,右黑格是78,左邊填上8,右邊只剩7
2021-04-29 20:49:46
可以說中文嗎 窩也想參加[e28]
2021-04-29 21:07:25
愛天使亞夜
這些是中文啊
2021-04-29 21:22:55

更多創作