第 26 講:跨區(qū)數(shù)組基本原理
Part 1?假數(shù)組/偽數(shù)組(Subset Counting)

如圖所示。我們觀察r5c2359和r6c2這五個(gè)單元格。它們有一個(gè)神奇的地方是,恰好五格里面剛好只有五種不同的候選數(shù)1、4、5、7、8。這恰好滿足數(shù)組的定義啊,但是這一定就是一種數(shù)組嗎?當(dāng)然不能直接確定了。數(shù)組的定義是必須規(guī)定于同一區(qū)域下的,而這里的五格包含跨區(qū)域的單元格,比如這里r6c2和r5c9兩格,就根本沒(méi)啥聯(lián)系了。
那我們這么去想這個(gè)問(wèn)題:既然長(zhǎng)得很像數(shù)組,那就分“內(nèi)部填數(shù)不重復(fù)”和“內(nèi)部填數(shù)有重復(fù)”來(lái)討論情況吧。
我們發(fā)現(xiàn),數(shù)字1、4、5、7、8這五種數(shù)字里面,只可能有數(shù)字7可能會(huì)重復(fù)。因?yàn)?的位置可以同時(shí)填入到r6c2和r5c9之中,這樣它們兩格沒(méi)有直接關(guān)系,就可能產(chǎn)生重復(fù)。但是,其余的數(shù)字都不可能重復(fù),比如1的位置就只出現(xiàn)在r5c39中,恰好r5c39同行(r5),所以這兩格一定只可能有其中一格是1的;同理,4的位置也只出現(xiàn)在r5c23之中,恰好r5c23同行(r5)和同宮(b4),所以4在這五格里面就更不可能重復(fù)了;那么5和8的分析方式也是一樣的(5的所有填數(shù)可能均同行,8的填數(shù)可能均同宮)。所以唯獨(dú)數(shù)字7可能有重復(fù)。
那么,如果要把1、4、5、7、8這五種數(shù)字填入到這五格之中去的話,當(dāng)內(nèi)部有重復(fù)(就假設(shè)此時(shí)r5c9和r6c2同時(shí)是7)時(shí),剩余的r5c235三格,就有四種填入的數(shù)字(1、4、5、8)可選。這樣一來(lái),究竟是其中的哪三種數(shù)字被選進(jìn)去填入了,我們無(wú)從得知。所以這方面的情況我們確定不了。但是我們能確定的是,不管重不重復(fù),數(shù)字7在結(jié)構(gòu)之中都是不可缺少的。換句話說(shuō),這四格的數(shù)字7,是不可能全部從盤面之中消失的。同時(shí)全被去掉時(shí),這五格里面就只剩下四種數(shù)字(1、4、5、8)了,又因?yàn)樗鼈円欢ㄊ遣豢商顢?shù)重復(fù)的,所以這顯然是不夠的,所以便產(chǎn)生了矛盾。
于是乎,我們得到了結(jié)論:不管內(nèi)部怎么填數(shù),數(shù)字7都是不可缺少的,所以刪除掉的是四格候選數(shù)7共同對(duì)應(yīng)到的位置。所以,r5c1 <> 7。
這個(gè)結(jié)構(gòu)稱為偽數(shù)組(或假數(shù)組,Extended Subset Principle/SubSet Counting)。偽數(shù)組分析起來(lái)相當(dāng)痛苦,也很費(fèi)勁,而結(jié)論卻如此“草率”。那么有沒(méi)有什么辦法更為簡(jiǎn)單呢?或者說(shuō),怎么樣觀察和使用更快一些呢?
Part 2?跨區(qū)數(shù)組刪數(shù)理論和原理
偽數(shù)組的分析方向大體是按照是否是一個(gè)“跨區(qū)域的數(shù)組”來(lái)看的。如果是,則內(nèi)部不重復(fù);而如果不是,則內(nèi)部一定有重復(fù)的數(shù)字。然后就去找重復(fù)的數(shù)字到底是多少。而偽數(shù)組有一個(gè)特征,這在剛才我們推導(dǎo)原理時(shí),就得到了一點(diǎn):偽數(shù)組假設(shè)內(nèi)部有重復(fù)的話,唯一有重復(fù)可能的數(shù)字一定不可全部從盤面之中消失。所以,在觀察和找結(jié)論的時(shí)候,只要判斷出唯一可重復(fù)的數(shù)字是多少,找到交集,就可以直接刪數(shù)了。
那么,有沒(méi)有一眼看出來(lái),是一個(gè)跨區(qū)域的結(jié)構(gòu),但是內(nèi)部一定不重復(fù)的呢?有的,比如這個(gè)例子。

如圖所示。觀察r34c34四格,內(nèi)部只有1、4、6、8四種數(shù)字,而恰好填入于四格之中。但巧妙的是,1、4、6、8都不可重復(fù),因?yàn)閿?shù)字1的所有填數(shù)位置同列,數(shù)字4的所有填數(shù)位置通同列,數(shù)字6的所有填數(shù)位置同行,8的所有填數(shù)位置同行。所以這根本不可能有重復(fù)的填數(shù)情況的。
我們稱,如果在分析一個(gè)偽數(shù)組時(shí),發(fā)現(xiàn)它的內(nèi)部一定不重復(fù)的話,這個(gè)結(jié)構(gòu)就叫分布式跨區(qū)數(shù)組(Distributed Disjointed Subset,簡(jiǎn)稱DDS),簡(jiǎn)稱跨區(qū)數(shù)組。那么一個(gè)DDS的刪數(shù)應(yīng)該如何呢?
由于內(nèi)部不重復(fù)的關(guān)系,一個(gè)跨區(qū)數(shù)組內(nèi)一定恰好只填入這些數(shù)字,換句話說(shuō),這些數(shù)字都是必不可少的。因此,比如圖上示例,由于1的填數(shù)一定出現(xiàn)在r34c4上,所以c4內(nèi)其余單元格都不可以是1;6的填數(shù)一定出現(xiàn)在r4c34上,所以r4內(nèi)其余單元格都不可以是6,而4和8也是一樣。所以,刪數(shù)已經(jīng)全部標(biāo)注在圖上了。當(dāng)然了,該示例還有一個(gè)DDS,請(qǐng)你尋找一下。
Part 3?SDC和跨區(qū)數(shù)組
SDC特別麻煩,分了好多種不同的情況來(lái)討論和分析。不過(guò),最終我們發(fā)現(xiàn),很多“恰好”滿足的情況,就比如三個(gè)單元格融合示例(即帶區(qū)塊示例)里的1、4數(shù)對(duì)、2、6、7三數(shù)組和這個(gè)單獨(dú)的9,都是“恰好”形成的。那這么多“恰好”,真的是偶然導(dǎo)致的嗎?現(xiàn)在我們就來(lái)看一下這個(gè)問(wèn)題。

如圖所示,這是一個(gè)SDC,不過(guò)我沒(méi)有分成橙色和綠色來(lái)涂色。因?yàn)檫@樣更接近于偽數(shù)組的分析方式。
我們使用偽數(shù)組的分析方式來(lái)看,它是一個(gè)跨區(qū)七數(shù)組,但是巧妙的是,內(nèi)部并不可能有可以重復(fù)的數(shù)字,因?yàn)?、2、3、4同列(c8),而7、8、9同宮(b6),所以它是DDS。按照DDS的刪數(shù)原則,c8內(nèi)其余單元格都不可以是1、2、3、4;而b6內(nèi)的其余單元格都不可以是7、8、9了。于是刪掉它們。
SDC的觀察或許比較麻煩,因?yàn)樾枰謨蓚€(gè)區(qū)域來(lái)假設(shè)其待定數(shù)組的情況。但是使用偽數(shù)組角度,是不是會(huì)稍微輕松一些呢?
融合待定數(shù)組(SDC)還有一個(gè)名字叫雙區(qū)域分布式跨區(qū)數(shù)組(Two-sector Disjoint Subset),就是因?yàn)檫@個(gè)原因。