第 27 講:均衡數(shù)組
接下來我們來看一種稍微暴力一些的技巧,叫均衡數(shù)組(Aligned Subset Exclusion)。
Part 1 均衡數(shù)對(duì)(Aligned Pair Exclusion)

如圖所示,觀察r12c6。在無計(jì)可施的情況下,我們來枚舉這兩格的所有填數(shù)情況。那么,r12c6都是三值格,所以就應(yīng)該有九種不同的填法。我們一一羅列出來:

第一列表示r1c6填的所有可能,第二列表示r2c6填的所有可能。隨后我們發(fā)現(xiàn),有一種特別的情況,使得它所有對(duì)應(yīng)的情況,全部都是錯(cuò)誤的。就是那個(gè)r2c6 = 8。當(dāng)r2c6 = 8的時(shí)候,r1c6的所有填數(shù)可能與之的組合都不對(duì)。正是因?yàn)槿绱?,所以r2c6 <> 8。
這個(gè)結(jié)構(gòu)稱為均衡數(shù)對(duì)(Aligned Pair Exclusion),它的邏輯很暴力——枚舉。說白了就是一個(gè)一個(gè)去找。更大的結(jié)構(gòu)就是下面的這個(gè)例子了。
Part 2?均衡三數(shù)組(Aligned Triple Exclusion)

按照剛才的邏輯,我們把r1c46和r2c1的所有填數(shù)情況都枚舉一遍。

隨后發(fā)現(xiàn),所有r1c4 = 4的情況均是錯(cuò)誤的。所以,r1c4 <> 4。
這個(gè)就是均衡三數(shù)組(Aligned Triple Exclusion)了。
Part 3 均衡四數(shù)組(Aligned Quadruple Exclusion)

可怕的枚舉情況。一共我們需要枚舉r7c6、r8c27和r9c4四個(gè)的所有填數(shù)組合。候選數(shù)一共是2 * 3 * 3 * 3 = 54種情況!
不過,r8c2 = 7時(shí),其它三個(gè)單元格的所有填數(shù)情況全部都會(huì)導(dǎo)致矛盾,所以r8c2 <> 7。
Part 4 為什么如此暴力的技巧,也會(huì)放在這里介紹?
均衡數(shù)組一直飽受爭(zhēng)議,因?yàn)樗耐评矸绞竭^于暴力,并且不容易觀察到。在此為大家介紹一種觀察方式。
首先,由于均衡數(shù)組的枚舉單元格是不定的,所以我們此時(shí)按照每一大行和大列的方式搜尋。如果找的是均衡數(shù)對(duì),則去找大行和大列存在的雙值格(含有兩個(gè)候選數(shù)的單元格),如果這樣的雙值格較多,就有一定可能產(chǎn)生均衡數(shù)對(duì)(但如果這樣的單元格較少,就不容易得到類似于均衡數(shù)對(duì)枚舉而產(chǎn)生的矛盾現(xiàn)象);那如果是均衡三數(shù)組,則去尋找大量的三值格(含有三個(gè)候選數(shù)的單元格)和雙值格,看是否這樣的單元格很多。如果這樣的單元格很多,則我們可以知道的是,這樣的均衡三數(shù)組很有可能出現(xiàn)(當(dāng)然,也有可能不存在,只是很大程度滿足了結(jié)構(gòu)需求了)。
當(dāng)結(jié)構(gòu)滿足要求的時(shí)候,這個(gè)時(shí)候就去看雙值格和三值格涉及的所有數(shù)字,然后去尋找只有這些候選數(shù)的單元格,最后才會(huì)針對(duì)這樣的結(jié)構(gòu)進(jìn)行枚舉推導(dǎo)。而均衡數(shù)組經(jīng)常被改寫為待定數(shù)組的某些形式,但有時(shí)也不一定比均衡數(shù)組觀察起來方便。
那么,整個(gè)待定數(shù)組的基本使用技巧就講到這里,這也象征著進(jìn)階技巧已經(jīng)全部講完了,接下來我們將進(jìn)入到鏈的學(xué)習(xí)之中。