1. 程式人生 > >數獨高階技巧之八——SDC

數獨高階技巧之八——SDC

在本系列的第四篇“簡單異數鏈”中,向大家介紹了XY-Wing等一系列Wing類技巧,並提到可以用(拐彎的)陣列的觀念來理解這些結構,經過第六篇ALS的學習之後,大家回過頭再去看Wing,應該可以發現相關的例項都可以用ALS去解釋。本篇則要介紹一種與上述結構類似的刪除技巧——SDC(Sue de Coq)。

一、基本形態

Sue de Coq這個命名來自於SDC技巧最早發現者的論壇暱稱,更正式的名稱應該是Two-Sector Disjoint Subsets(雙分離子集刪除法),我們先來看SDC的兩種基本形態。

 
圖1 SDC-01

圖1中,B4和R5深色背景4個待解格中存在且僅存在(A、B、C、D)4個候選數,可將這4個候選數分成紅(A、B)、綠(C、D)兩個分離子集(紅∩綠=Ø),將4個待解格按其所在單元分為宮B、行R兩個子集,紅色(A、B)存在於子集B三格中,綠色(C、D)存在於子集R三格中,兩個待解格子集存在交集X(交疊區域兩格,X=B∩R),X中的候選數為紅、綠兩個候選數分離子集的並集,若滿足這些條件,紅、綠兩個子集可各自對所在單元其他格內的候選數進行擯除

為什麼可以這樣刪數呢?以ALS的視角來看原理很簡單,將這四格按所在單元分為宮、行兩組ALS(每組都是3格4數

),此時:

1、若宮行相交區域的A、B都不成立,則R5深色3格中只能填入C、D兩個候選數,違反數獨規則,故宮行相交區域的A、B必須成立一個,這樣就會與R4C1格構成AB數對,進而對AB數對所在的B4進行擯除;

2、若宮行相交區域的C、D都不成立,則B4深色3格中只能填入A、B兩個候選數,違反數獨規則,故宮行相交區域的C、D必須成立一個,這樣就會與R5C5格構成CD數對,進而對CD數對所在的4進行擯除。

我們還可以用陣列的視角來進行分析:在深色4格中,存在且僅存在(A、B、C、D)4個不同的候選數,雖然4格不在同一單元,但他們籍由交疊區域聯結,並不影響(ABCD)陣列的成立(在N格中存在且僅存在N個不同候選數

),亦即(A、B、C、D)4個候選數鎖定了這4格,只是由於這個陣列拐了彎,分處不同單元,其刪數方法也不同於正常的陣列。在該陣列中,僅存在於特定單元的候選數集只能對所在單元其他格進行擯除。

來看第2種基本形態:

  圖2 SDC-02

與圖1示例不同之處在於,相交區域多出了一個候選數E,相應的格數也增加了一格,深色5格存在且僅存在 A、B、C、D、E 5個候選數,我們仍可將這些候選數分為分處宮、行的兩個分離子集(AB)與(CDE)或者(ABE)與(CD),並且,宮和行(列)相交區域的三格為兩個分離子集的並集,與上例一樣,大家可以分別用陣列和ALS的視角來理解刪數的邏輯,只是本例中由於候選數E僅位於相交區域內(亦即E同時存在於B4、R5兩個單元),所以,E可以對B4和R5兩個單元進行擯除。

來看例項:

  圖3 SDC-03

圖3盤勢中,B7和R7中R7C137、R8C3四格僅含有(3、4、5、9)4個候選數,藍色候選數(4、5)構成一個子集,紫色候選數(3、9)構成一個子集,兩個分離子集相交於R7C13兩格,且這兩格為兩個子集的並集,這4格形成SDC結構,每個子集可對其所在單元其他格內的候選數進行擯除(紅色)。

  圖4 SDC-04

圖4則是基本形態2的一個例項,相交區域多出了候選數4,大家可以根據前面的介紹來理解本例的刪數,具體過程不再贅述。

二、擴充套件形態

在基本形態的基礎上,組成SDC的各單元待解格每增加一個新的候選數(不同單元可增加相同的候選數),都須相應在該單元增加一個僅含有SDC中候選數的待解格,SDC待解格中的所有候選數可按其所處單元分為若干個子集,每個單元的候選數子集須存在於其所含元素數+1的待解格中,且不同單元的待解格存在交疊區域(格數≧2),交疊區域內的候選數來自這些子集的並集(交疊區域候選數個數≧交疊區域格數+2),每個子集都可對自身所處單元內其他格中的候選數進行擯除。

 

  圖5 SDC-05

圖5的例子就是基本形態一的擴充套件,B6和C8中,綠框5格中僅存在候選數(3、5、7、8、9),這些候選數可分為宮(7、8、9)和列(3、5)兩個分離子集,每個子集都存在於其所含元素數+1的待解格中,宮列交疊的兩綠框格內的候選數(3、5、7、8)來自宮、列兩個子集的並集(3、5、7、8、9),宮中的子集(7、8、9)可對B6其他格中的7、8、9進行擯除,列中的子集(3、5)可對C8其他格中的3、5進行擯除。

圖6則是基本形態二的擴充套件,7格7數,大家可以對照定義自己揣摩一下刪數的過程。

  圖6 SDC-06

圖7是基本形態一的擴充套件,特殊之處在於列和宮的待解格中增加了相同的候選數1,依然可以將其分為C7綠框四格(1、4、9),B9綠框四格(1、2、8)兩個子集,這兩個子集都是3數4格,交疊區域兩格候選數為(2、4、8、9),其元素來自於兩個子集的並集,可分別刪去C7其他格中的1、4、9,B9其他格中的1、2、8。

  圖7 SDC-07

圖8的例項則是在圖9的基礎上再次擴充套件,請仔細體會。

  圖8 SDC-08

以上都是可以分為兩個子集的SDC,兩個以上子集的SDC非常難觀察,平時做題幾乎用不到,就不介紹了。文末附上幾個SDC的練習題,大家看看能不能找出來。

  SDC 練習題1   SDC練習題2   SDC練習題3

作者:零時四分_719b
連結:https://www.jianshu.com/p/673d43264984
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。