數獨解題方法大全


數獨解題方法大全

作者:揚子活力論壇 泥瓦匠      整理:隱讀書生

數獨這個數字解謎游戲,完全不必要用到算術!會用到的只是推理與邏輯。解題方法分兩大類:直觀法和候選數法。

 直觀法就是不需要任何輔助工具,從接到數獨謎題的那一刻起就可以立即開始解題。絕不猜測。數獨直觀法解題技巧主要有:唯一解法、基礎摒除法、區塊摒除法、唯余解法、矩形摒除法、單元摒除法,余數測試法。

候選數法就是解數獨題目需先建立候選數列表,根據各種條件,逐步安全的清除每個宮格候選數的不可能取值的候選數,從而達到解題的目的。

使用候選數法一般能解比較復雜的數獨題目,但是候選數法的使用沒用直觀法那么直接,需要先建立一個候選數列表的准備過程。所以實際使用時可以先利用直觀法進行解題,到無法用直觀法解題時再使用候選數方法解題。

候選數法解題的過程就是逐漸排除不合適的候選數的過程,所以在進行候選數刪除的時候一定要小心,確定安全的刪除不合適的候選數,否則,很多時候只有重新做題了。有了計算機軟件的幫助,使得候選數表的維護變得輕松起來。

數獨候選數法解題技巧主要有:唯一候選數法、隱性唯一候選數法、區塊刪減法、數對刪減法、隱性數對刪減法、三鏈數刪減法、隱性三鏈數刪減法、矩形頂點刪減法、三鏈列刪減法、關鍵數刪減法、關連數刪減法。

一、直觀法:

1、唯一解法:

        當某行已填數字的宮格達到8個,那么該行剩余宮格能填的數字就只剩下那個還沒出現過的數字了。成為行唯一解。

        當某列已填數字的宮格達到8個,那么該列剩余宮格能填的數字就只剩下那個還沒出現過的數字了。成為列唯一解。

        當某九宮格已填數字的宮格達到8個,那么該九宮格剩余宮格能填的數字就只剩下那個還沒出現過的數字了。成為九宮格唯一解。

  下面是例題:

A行已經添入8個數字,A行只有數字3沒有出現過,所以A9=3,這是行唯一解。

clip_image001

1列已經添入8個數字,第1列只有數字5沒有出現過,所以E1=5,這是列唯一解。

clip_image002

A8所在九宮格區域已經添入8個數字,只有數字9沒有出現過,所以A8=9,這是九宮格唯一解。

clip_image003

2、基礎摒除法

     基礎摒除法就是利用1 9 的數字在每一行、每一列、每一個九宮格都只能出現一次的規則進行解題的方法。基礎摒除法可以分為行摒除、列摒除、九宮格摒除。

實際尋找解的過程為:

尋找九宮格摒除解:找到了某數在某一個九宮格可填入的位置只余一個的情形;意即找到了該數在該九宮格中的填入位置。

尋找列摒除解:找到了某數在某列可填入的位置只余一個的情形;意即找到了該數在該列中的填入位置。

尋找行摒除解:找到了某數在某行可填入的位置只余一個的情形;意即找到了該數在該行中的填入位置。

    利用基礎摒除法解題的過程就是依次從數字1 9 在行、列、九宮格尋找能放入該數唯一的一個位置。需要綜合用到行摒除、列摒除、九宮格摒除的方法。

    看能用基礎摒除法確定B2、C8、E7、F6、I5的數字嗎?

題目如下:

clip_image004

A4=9,則A行其它格排除9;G1=9,第1列排除數字9;D3=9,第3列排除數字9。

見下圖

clip_image005

由基礎摒除法,第A1所在的九宮格內9只有一個唯一的位置,即確定B2=9

見下圖

clip_image006

A4=9,則4列其它格排除9;G1=9,第G行排除數字9;H9=9,第H行排除數字9。

見下圖

clip_image007

由基礎摒除法,第G4所在的九宮格內9只有一個唯一的位置,即確定I5=9

見下圖

clip_image008

A4=9,則4列其它格排除9;D3=9,第D行排除數字9;I5=9,第5列排除數字9。

見下圖

clip_image009

由基礎摒除法,第D4所在的九宮格內9只有一個唯一的位置,即確定F6=9

見下圖

clip_image010

A4=9,則A行其它格排除9;B2=9,第B行排除數字9;H9=9,第9列排除數字9。

見下圖

clip_image011

由基礎摒除法,第A7所在的九宮格內9只有一個唯一的位置,即確定C8=9

見下圖

clip_image012

C8=9,則8列其它格排除9;D3=9,第D行排除數字9;F6=9,第F行排除數字9;H9=9,第9列排除數字9。

見下圖

clip_image013

由基礎摒除法,第D7所在的九宮格內9只有一個唯一的位置,即確定E7=9

3、區塊摒除法

    區塊摒除法是基礎摒除法的提升方法,是直觀法中使用頻率最高的方法之一。

        所謂區塊,就是將行分成3個三個相連的小方塊構成,列也是分成3個三個相連的小方塊構成。九宮格同樣被看成由3個三個相連的小方塊構成,如下面示意圖: 

clip_image014   clip_image015   clip_image016   clip_image017 

區塊摒除法的核心思想如下面解釋(以行為例),對於在列也是相同的道理

clip_image018

假如(G1~G3)黃色區域區塊其中之一是數字9

clip_image019

則,(H4~H6)藍色區域可能含有數字9

否則(I4~I6)綠色區域含有數字9

clip_image020

假定我們已確定(G1~G3)黃色區域區塊其中之一是數字9

(H4~H6)藍色區域含有數字9

則:在(I7~I9)綠色區域一定含有數字9。如果再通過其它方法確定(I7~I9)綠色區域中某兩個宮格不能為數字9,則就能確定數字9(I7~I9)區塊的具體位置。

下面舉一些例子

能使用區塊摒除法確定F6的數字嗎

clip_image021

D2=2,則E1~E3藍色區塊,或F1~F2綠色區塊必包含數字2

clip_image022

又有B1=2,利用列摒除法,E1F1不能為數字1,有F2F3已填有數字,所以,E2~E3藍色區塊必有數字2

clip_image023

由上面得出黃色區塊,藍色區塊包含數字2,這是典型的區塊摒除法,得到綠色區塊必包含數字2

clip_image024

G4=2,F5已添入數字,所以F6=2

clip_image025

4、唯余解法

    唯余解法就是某宮格可以添入的數已經排除了8個,那么這個宮格的數字就只能添入那個沒有出現的數字。

clip_image026

唯余解法道理非常簡單,但在實際使用是比較困難,要注意識別。A5=?

其實這就是唯余解法的原理,很簡單吧。但是實際使用時就不會容易發現了。

clip_image027

能使用唯余解法確定B7的值嗎?

呵呵,等於8

clip_image028

能確定E9A9B9C9的值嗎?

clip_image029

由區塊摒除法可以得出E9=9。在區塊摒除法沒有舉這個例子,這里補充。

clip_image030

由唯余解法,C9=2

clip_image031

同樣,可得出B9=4A9=8

5、矩形摒除法

 矩形摒除法是比較高級的排除方法,雖然矩形摒除法的原理非常簡單,在實際使用時比較難於觀察出來。

矩形摒除法的原理如下:

clip_image032

如上圖,如果在第3列,我們確定數字9只能在B3H3出現。在第7列,數字9只能在B7H7出現。則B3H3B7H7構成矩形,符合矩形摒除法的條件。

clip_image033

由上,可以得出數字"9"僅可能出現在 (B3H7)上,或者出現在 (B7H3)

clip_image034

無論出現上面的那一種情況,我們都可以推斷出B行,H行的紅色區域都不能再為數字 9了。

下面舉一個使用矩形摒除法的例子

clip_image035        clip_image036

C7=3,我們可以判斷在第3列,數字3只能出現在A3H3

又第6列,數字3只能出現在A6H6

A3H3A6H6形成矩形符合矩形摒除法的條件

clip_image037

由矩形摒除法得到H8不可能是3,又根據C7=3,所以G9=3

6、單元摒除法

單元摒除法是比較基本的排除方法,下面舉例解釋

clip_image038

能確定A8的數字嗎?

clip_image039

D5=7,得出D8不等於7

H9=7,得出G8H8I8均不等於7

顯然A8=7

7、余數測試法

所謂余數測試法就是在某行或列,九宮格所填數字比較多,剩余2個或3個時,在剩余宮格添入值進行測試的解題方法。

clip_image040

我們看B行,B3可能添入的數為5或者6,我們從5開始測試。

clip_image041

我們在B3添入5進行測試,得到左圖,沒有得出出錯的推斷,所以B3=5可能是正確的判斷,如果能判斷出B3<>6,則才能肯定B3=5

clip_image042

所以下面我們還需要用B3=6進行測試

B3添入6,推出B8=5

clip_image043

觀察C行,C7C8C9必含有數字5

證明B3=6是錯誤的。從而得出B3=5

二、候選數法:

1、唯一候選數法

候選數法解題的過程就是逐漸排除不合適的候選數的過程,當某個宮格的候選數排除到只有一個數的時候,那么這個數就是該宮格的唯一的一個候選數,這個候選數就是解了。

clip_image044

我們可以排除D312356789的可能,經過候選數的安全刪除后,D3的候選數變為"4"這個唯一候選數了。

2、隱性唯一候選數法

當某個數字在某一列各宮格的候選數中只出現一次時,那么這個數字就是這一列的唯一候選數了。這個宮格的值就可以確定為該數字。

這時因為,按照數獨游戲的規則要求每一列都應該包含數字19,而其它宮格的候選數都不含有該數,則該數不可能出現在其它的宮格,那么就只能出現在這個宮格了。

對於唯一候選數出現行,九宮格的情況,處理方法完全相同

這是制作好的一張候選數表,注意觀察B5B9D1

clip_image045  clip_image046

可以看出在第1列,數字9只在D1出現。

在第5列,數字3只在B2出現。

B9所處的九宮格里,數字9只有在B9出現。

所以“9”是第1列的隱形唯一候選數。

“3”是第5列的隱形唯一候選數。

“9”A7九宮格的隱形唯一候選數。

所以確定D13B53B99

3、三鏈數刪減法

找出某一列、某一行或某一個九宮格中的某三個宮格候選數中,相異的數字不超過3個的情形,進而將這3個數字自其它宮格的候選數中刪減掉的方法就叫做三鏈數刪減法。

三鏈數刪減法的原理如下面圖示

clip_image047

H行,H2H5H7的候選數(12),(23)(13),構成三鏈數,那么123這三個數在H行將只能出現在H2H5H7,那么本行其它宮格就可以刪除這3個候選數了。這是三鏈數發生在行的情況。

clip_image048

G7所在九宮格,G7H8I9的候選數(12),(23)(13),構成三鏈數,那么123這三個數在這個九宮格將只能出現在G7H8I9,那么本九宮格其它宮格就可以刪除這3個候選數了。這是三鏈數發生在九宮格的情況。

clip_image049

三鏈數是數對的擴展,我們在對上面的三鏈數進行擴展,得到右邊的特殊的三鏈數,只要保證在3個宮格內,其包含的候選數也為3個,就都符合我們的要求,比如(123123123)(1212123)都符合要求。

我們進一步再擴充,發現只要在N個宮格內,其包含的候選數也恰為N個,那么處理和三鏈數是相同的道理,這樣就形成了四鏈數,比如(12233414)(123123141234)等。

甚至可以擴充到五鏈數,七鏈數(雖然在實際解題中作用不大了)。

平時我們用到最多的就是三鏈數,四鏈數了。

clip_image050

A4所在九宮格,我們看到B4~B6,形成三鏈數,則本九宮格其它宮格就可以去除候選數"2""7""9",這樣就得到C6=4

clip_image051

同上面完全相同的一副圖,在A行,A7~A9形成由179構成的三鏈數,排除本行其它宮格的候選數179后得到A3=3

4、隱性三鏈數刪減法

隱性三鏈數是從隱性數對發展而來的。

在某行,存在三個數字出現在相同的宮格內,在本行的其它宮格均不包含這三個數字,我們稱這個數對是隱形三鏈數。那么這三個宮格的候選數中的其它數字都可以排除。

當隱形三鏈數出現在列,九宮格,處理方法是完全相同的。

我們進一步擴充,在某行(列,九宮格),存在N個數字出現在相同的宮格內,在本行的其它宮格均不包含這N個數字,我們稱這個數對是隱形N鏈數。那么這N個宮格的候選數中的其它數字都可以排除

clip_image052

在中間九宮格,候選數“2”“5”“9”僅出現在E4E6F4,形成隱形三鏈數,所以在E4E6F4,可以排除其它候選數,得到F4=9

5、矩形頂點刪減法

矩形頂點刪減法和直觀法講到的矩形摒除法分析方法是一樣的。矩形頂點刪減法在識別時比較不容易找到,所以最好先使用其它的方法。

clip_image053

如上圖,如果在第3列,候選數“9”只能在B3H3出現。在第7列,候選數“9”只能在B7H7出現。

B3H3B7H7構成矩形,符合矩形頂點刪減法的條件。

clip_image054

由上,可以得出數字“9”僅可能出現在(B3H7)上,或者出現在(B7H3)

clip_image034

無論出現上面的那一種情況,我們都可以推斷出B行,H行的紅色區域都不能再為數字9了。可以將紅色的宮格的候選數中去除數字“9”

舉例說明如下:

clip_image055

在第3列,數字“3”僅在A3H3出現和第6列,數字“3”僅在A6H6出現,A3H3A6H6構成矩形,符合矩形頂點刪減法要求,

則紅色宮格應排除候選數“3”

6、三鏈列刪減法

三鏈列刪減法是矩形頂點刪減法的擴展,如果不清除矩形頂點刪減法,可以參考矩形頂點刪減法,以便於更容易理解本節內容。

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

clip_image056

如果數字“1”可能出現在B行、E行、G行的黃色宮格,則符合某個數字在某三列僅出現在相同三行的情形,符合三鏈列刪減法的要求。

clip_image057

則紅色宮格均不包含候選數“1”

clip_image058

這是前圖的一個變形。其中一行的“1”只能放在這一行的兩個位置。 處理和上圖一樣,紅色宮格均可以排除候選數“1”

舉例說明:

clip_image059

數字"6"在第2列,第6列,第8列。均出現在AB,I行。其中在第6列僅出現B,I行,仍然符合三鏈列刪減法的要求。

clip_image060

則紅色宮格均可以排除候選數"6"

7、關鍵數刪減法

在進入到解題后期,利用前面講到的唯一候選數法、隱性唯一候選數法、區塊刪減法、數對刪減法、隱性數對刪減法、三鏈數刪減法、隱性三鏈數刪減法、矩形頂點刪減法、三鏈列刪減法都無法有進展的時候,可以考慮使用關鍵數刪減法。關鍵數刪減法就是在后期找到一個數,這個數在行(或列,九宮格)僅出現兩次的數字。我們假定這個數在其中一個宮格類,繼續求解,如果發生錯誤,則確定我們的假設錯誤。如果繼續求解仍然出現困難,不妨假設這個數在另外一個宮格,看能不能得到錯誤。這就是關鍵數刪減法。

關鍵數刪減法的本質是讓我們一個個去測試,逐漸排除不可能的候選數,從而求解的過程。

這種解法就暫時不舉例子了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM