最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

第 35 講:毛刺數(shù)組

2021-07-13 07:27 作者:SunnieShine  | 我要投稿

數(shù)組這個(gè)技巧在我們之前其實(shí)介紹過,不過之前的數(shù)組(顯性、隱性、區(qū)塊數(shù)組甚至是跨區(qū)數(shù)組)都是可以直接用的?,F(xiàn)在來看一個(gè)不能直接用的數(shù)組形式。

Part 1 顯性毛刺數(shù)組

我們先來看一則示例。

如圖所示,鏈如下表示:

按照最開始的邏輯,設(shè)r7c6(7)為假,則得到r8c6(7)真、r8c6(1)假、r9c5(1)真、r9c1(1)假。而此時(shí)發(fā)現(xiàn),r9c1(1)假之后,r9c13形成了3、7顯性數(shù)對。

換句話說,r7c6(7)有兩種填數(shù)情況,其為假時(shí),得到r9c13(37)顯性數(shù)對結(jié)構(gòu),換句話說,r9c13(37)顯性數(shù)對在此時(shí)是為真的(結(jié)構(gòu)成立就為真,結(jié)構(gòu)不成立時(shí)為假)。所以r7c6(7)和r9c13(37)(即這個(gè)顯性數(shù)對)之中至少有一個(gè)為真,于是刪除掉它們的交集。那一個(gè)顯性數(shù)對和一個(gè)候選數(shù)怎么找交集呢?

  • r7c6(7)為真時(shí),可以刪的是r7c6所在區(qū)域下所有的單元格(相關(guān)格)內(nèi)的7;

  • r9c13(37)為真時(shí),可以刪的是b7和r9內(nèi)其余單元格的候選數(shù)3和7。

所以對于此題來說,它們的交集,只有r7c1(7)了,所以r7c1 <> 7。

這個(gè)結(jié)構(gòu)是不是很神奇?你會(huì)發(fā)現(xiàn),在末端嵌入了一個(gè)顯性數(shù)對,但前提是r9c1(1)為假時(shí),這個(gè)顯性數(shù)對才真正成立,所以它可能并不是一個(gè)真正的數(shù)組,而類似于我們之前學(xué)到的魚鰭的邏輯。所以我們一般稱這種結(jié)構(gòu)叫毛刺顯性數(shù)對顯性毛刺數(shù)對(Burred Naked Pair),毛刺(Burr)一詞用來表示結(jié)構(gòu)多出來了一點(diǎn)點(diǎn)東西,并使這一點(diǎn)點(diǎn)為假時(shí),本體結(jié)構(gòu)才真正成立。關(guān)于毛刺,我們還將在鏈的構(gòu)造的內(nèi)容里詳細(xì)談?wù)撍幕具壿嫼退季S方式。

實(shí)際上,毛刺和魚鰭是完全一樣的東西,只是魚鰭一般針對于魚結(jié)構(gòu),毛刺則針對于其余的非魚結(jié)構(gòu)的技巧。而正是因?yàn)樗鼈內(nèi)绱私咏?,所以毛刺一詞在英文里用的Burr一詞,也動(dòng)詞化,加上了分詞性形容詞的后綴-ed(burred)。

毛刺這個(gè)概念是由中國玩家探長(網(wǎng)名,Borescoper)提出。

Part 2?隱性毛刺數(shù)組

如圖所示。鏈如下所示:

如果r46c1(3)區(qū)塊為假時(shí),r7c1(3)為真(之前也提到過這一點(diǎn),區(qū)塊和候選數(shù)的強(qiáng)關(guān)系怎么推導(dǎo))。于是,r7c1(6)假、r7c3(6)真、r7c3(8)假。觀察c3,我們可以發(fā)現(xiàn),r7c3(8)為假時(shí),c3剛好產(chǎn)生78隱性數(shù)對,在r45c3。換句話說,當(dāng)r7c3(8)為假時(shí),r45c3(78)隱性數(shù)對為真。于是也就得到了r46c1(3)區(qū)塊和r45c3(78)隱性數(shù)對至少一個(gè)為真。

  • r46c1(3)區(qū)塊可以刪除的是c1和b4內(nèi)的其余位置的候選數(shù)3;

  • r45c3(78)隱性數(shù)對可以刪除的是r45c3內(nèi)其余的候選數(shù)。

所以,它們的交集,應(yīng)該是r45c3(3)。所以r45c3 <> 3。

那么,類比于剛才的顯性毛刺數(shù)組,隱性毛刺數(shù)組(或毛刺隱性數(shù)組,Burred Hidden Subset)指的是差一點(diǎn)形成隱性數(shù)組的情況,比如例子之中的r457c3(78)(別忘了r7c3也有候選數(shù)7哦)。

Part 3?毛刺數(shù)組節(jié)點(diǎn)的真假性

剛才我們接觸到的兩則示例,都是當(dāng)節(jié)點(diǎn)進(jìn)入的時(shí)候使得毛刺數(shù)組為真的結(jié)構(gòu),我們此時(shí)就接觸了一種新的節(jié)點(diǎn)類型:毛刺數(shù)組。

不過,毛刺數(shù)組為假是個(gè)什么樣子呢?所謂的毛刺數(shù)組為假,就是讓毛刺數(shù)組結(jié)構(gòu)的數(shù)組本身不成立,即破壞數(shù)組。

如何去破壞呢?我們知道,數(shù)組的核心本質(zhì)是“n個(gè)單元格只能填入n種數(shù)字”和“n種數(shù)字只能放在n個(gè)單元格里”,那么破壞的方式很簡單:要么里面有重復(fù)數(shù)字(這顯然不可能,因?yàn)閿?shù)組結(jié)構(gòu)的內(nèi)部是不可能出現(xiàn)重復(fù)數(shù)字的,一旦出現(xiàn)就違背了數(shù)獨(dú)規(guī)則);要么里面包含我們不需要的數(shù)字(比如一個(gè)毛刺數(shù)對里包含候選數(shù)1、2、7,如果7不見了就形成了1和2的數(shù)對。那么為了破壞數(shù)對,我們在其中填入數(shù)字7,這樣就破壞了1和2的數(shù)對結(jié)構(gòu))。只要出現(xiàn)這兩種情況,毛刺數(shù)組就被破壞了,也就稱毛刺數(shù)組為假。

例如我們來看一則毛刺數(shù)組為假的示例。

如圖所示,我們從r5c5(5)開始推理,并假設(shè)其為假。按照順序,我們可以依次得到r7c5(5)為真、r8c4(5)為假、r8c1(5)為真。此時(shí),當(dāng)r8c1(5)為真后,r89c1不管你怎么填,顯然都是無法形成2和7的隱性數(shù)對了,所以該結(jié)構(gòu)一定為假,故r89c1(27)為假。

接著,當(dāng)毛刺隱性數(shù)對為假的時(shí)候,r4c1(7)就必須為真了??蛇@是為什么呢?試想一下,毛刺隱性數(shù)對為假之后,由于是2和7的隱性數(shù)對的關(guān)系,按常理說,在c1上的2和7應(yīng)該只能放在r89c1里,但實(shí)際上是7出現(xiàn)了三次(r489c1),而2只有兩次(r89c1),而且此時(shí)經(jīng)過推導(dǎo),我們已經(jīng)得到了r8c1(5)為真了,此時(shí)r9c1是不得不填入2的,否則c1就放不了2了。那既然r9c1 = 2的話,7就只能放在唯一一處地方:r4c1了,因?yàn)閏1只有r589c1三處位置可以放7。

所以,當(dāng)毛刺數(shù)對節(jié)點(diǎn)為假的時(shí)候,不得不讓這個(gè)r4c1(7)為真,鏈才可以繼續(xù)推導(dǎo)下去。

當(dāng)然,如果你對逆否命題比較熟悉,你可以嘗試使用逆否命題論證:如果我們設(shè)定原命題是“如果2和7的隱性數(shù)對為假,則必須r4c1(7)為真”;那么其逆否命題則是“如果r4c1(7)為假,則2和7的隱性數(shù)對為真”。這是顯然的,因?yàn)閞4c1 <> 7后,c1只有兩處可以放下2和7,而且都是r89c1,所以這兩個(gè)單元格形成關(guān)于2和7的隱性數(shù)對,即隱性數(shù)對為真。所以逆否命題是成立的;既然逆否命題成立,那原命題也成立,所以原命題的論證結(jié)果為真(這實(shí)際上是把這個(gè)強(qiáng)關(guān)系反向來證明了,可以看到,從反向理解這個(gè)邏輯反而比正向理解要簡單,所以建議大家如果不能理解一些邏輯的時(shí)候,嘗試使用逆否命題和原命題等價(jià)的思維來解釋)。

當(dāng)然,這里再給出第三種理解。我們直接把r5c2(7)和r8c1(5)用弱關(guān)系連起來。因?yàn)樗鼈兺娴脑挘琧1將產(chǎn)生三個(gè)單元格只能放下5和7,導(dǎo)致矛盾的出現(xiàn),所以它們不同真,即形成弱關(guān)系,如圖所示。

Part 4?毛刺數(shù)組的解構(gòu)

實(shí)際上,不論是顯性毛刺數(shù)組還是隱性毛刺數(shù)組,我們都可以通過解構(gòu)的方式,把結(jié)構(gòu)本身解構(gòu)(Deconstruct)為一個(gè)強(qiáng)或弱的ALS。我們舉例說明一下。

如圖所示,這個(gè)鏈比較復(fù)雜,嵌入了一個(gè)毛刺顯性三數(shù)組。

首先假設(shè)r6c56(8)區(qū)塊節(jié)點(diǎn)為假,則r6c89(8)為真,于是r45c7(8)為假。此時(shí)由于r245c7里的8全部沒有了,于是形成顯性三數(shù)組,所以r245c7(156)毛刺顯性三數(shù)組節(jié)點(diǎn)為真,所以數(shù)組為真后可以刪除r7c7(1),故r7c7(1)為假、r7c7(3)為真、r7c5(3)為假,r9c6(3)為真,r9c6(8)為假,r8c5(8)為真。

所以這個(gè)題目的刪數(shù)在于r45c5(8),這是頭尾兩個(gè)節(jié)點(diǎn)的交集。

不過,有些時(shí)候,我們不得不將這個(gè)三數(shù)組解構(gòu)。因?yàn)槿龜?shù)組有些時(shí)候我們不一定能看到,而取而代之地使用ALS的觀察視角。所以實(shí)際上,顯性三數(shù)組將對應(yīng)一個(gè)合格的ALS區(qū)域,如圖所示。

如圖所示,我們將剛才的毛刺顯性三數(shù)組節(jié)點(diǎn)解構(gòu)為了一個(gè)兩個(gè)區(qū)塊節(jié)點(diǎn)的強(qiáng)關(guān)系:r24c7(1)=r45c7(8),而實(shí)際上,毛刺顯性三數(shù)組里我們也并沒有完整地使用到任何一個(gè)數(shù)字(比如原來的數(shù)組是1、5、6,而實(shí)際上我們涉及的強(qiáng)關(guān)系僅需要1和8就足夠了,5和6根本就沒用到),所以我們可以嘗試解構(gòu),把毛刺數(shù)組解構(gòu)為上述的ALS區(qū)域的強(qiáng)關(guān)系來使用;反之,有時(shí)候你也可以使用構(gòu)造(Construct),將一個(gè)ALS改為一個(gè)合適的數(shù)組形式,來豐滿結(jié)構(gòu),使之更容易理解。不過,有些時(shí)候ALS改寫出來的數(shù)組可能不是很符合預(yù)期,所以我們不建議隨時(shí)隨地都使用構(gòu)造。

由于對稱性的約束,顯性毛刺數(shù)組對應(yīng)了強(qiáng)ALS區(qū)域,那么隱性毛刺數(shù)組就對應(yīng)了WALS區(qū)域(即弱ALS)。因?yàn)锳LS用的強(qiáng)關(guān)系,而WALS區(qū)域用的是弱關(guān)系,所以對于隱性毛刺數(shù)組的解構(gòu)用得非常少。但是,你依然可以嘗試從其它層面對毛刺隱性數(shù)組解構(gòu),比如拆分成多個(gè)單元格,進(jìn)而得到意想不到的東西,例如下面的這則示例。

如圖所示,鏈如下表示:

這個(gè)鏈的精彩之處,是在于鏈的開頭和結(jié)尾。鏈頭是3和8的毛刺隱性數(shù)對,而鏈尾則是56毛刺顯性數(shù)對。那么根據(jù)鏈的證明思路,鏈頭和鏈尾至少有一個(gè)節(jié)點(diǎn)成立。所以,5、6的顯性數(shù)對和3、8的隱性數(shù)對的交集為r3c6(56),故r3c6 <> 56。當(dāng)然,我們依然可以嘗試解構(gòu)(注意下面的解構(gòu)方式),并得到下面兩條鏈結(jié)構(gòu):

在上方書寫的兩種形式的開頭,可能你會(huì)覺得鏈的寫法里是不是漏掉了r2c6這格,其實(shí)不然。r3c6(38)=r6c6(8)是成立的,即使是兩個(gè)候選數(shù)和一個(gè)候選數(shù)的特殊強(qiáng)關(guān)系。當(dāng)它們同假時(shí),r3c6將不會(huì)填入3或8,r6c6也不是8。這樣一來,觀察c6,你會(huì)發(fā)現(xiàn),c6內(nèi)填入3和8的位置,就只剩下了r2c6一處,可這樣一格是不夠填3和8兩種數(shù)字的,所以是不行的,強(qiáng)關(guān)系就成立了。

另外,結(jié)尾的強(qiáng)關(guān)系r3c9(8)=r3c49(5)和r3c9(8)=r3c49(6)則直接利用之前的毛刺顯性數(shù)組的解構(gòu)模式進(jìn)行解構(gòu),所以得到兩個(gè)不同的強(qiáng)關(guān)系,所以有不同的刪數(shù)。當(dāng)然了,如果你嫌別扭,依然還是可以寫作原來的數(shù)對形式的。所以實(shí)際上,這種形式的毛刺數(shù)組就不建議解構(gòu)理解了,不過鏈頭依然是可以解構(gòu)的。

Part 5?毛刺數(shù)組的其它使用方式

5-1?節(jié)點(diǎn)重疊

如圖所示,鏈如下表示:

鏈頭是一個(gè)3和9的毛刺隱性數(shù)對,而到r8c5(4)時(shí)為假,而r8c5(4)和r6c5(3)不可同假,否則c5之中只有一處可填3和4兩種數(shù)字,這顯然是不行的,所以它們不可同假,即r6c5(3)應(yīng)為真。最后得到了r5c9(3)為真,所以鏈頭3和9的毛刺隱性數(shù)對和鏈尾r5c9(3)至少有一個(gè)節(jié)點(diǎn)為真,刪掉它們的交集。39隱性數(shù)對成立時(shí),刪除r56c9的其余候選數(shù),而再算上r5c9(3)成立的時(shí)候,能夠刪除的位置只有r5c9的其余候選數(shù)。所以r5c9 <> 67。

這個(gè)例子有些別扭的地方是,鏈頭是一個(gè)毛刺隱性數(shù)組,而鏈尾,則是這個(gè)毛刺隱性數(shù)組里涉及的一個(gè)候選數(shù),這就好像鏈尾被鏈頭“吃掉了”一樣。

接下來我們再來看一個(gè)示例。

5-2?間接刪數(shù)的鏈

如圖所示,這也是一個(gè)包含節(jié)點(diǎn)重疊的鏈結(jié)構(gòu),而且和上面那個(gè)示例的方式類似,只是上例用的是顯性毛刺數(shù)組,而這里用的是隱性毛刺數(shù)組。鏈的表述如下:

這條詭異的鏈,就算是寫出來了,也會(huì)發(fā)現(xiàn)r2c3 <> 5。它是怎么刪掉的呢?

我們在之前的不連續(xù)環(huán)里介紹了,節(jié)點(diǎn)和刪數(shù)是弱關(guān)系。所以,只要我們找到鏈頭和鏈尾同時(shí)和可能要?jiǎng)h的這個(gè)節(jié)點(diǎn)都是弱關(guān)系的話,那么刪數(shù)就成立了。那么問題就變?yōu)榱俗C明r7c3(7)-r2c3(5)。

如果你還不能理解為什么“鏈頭和鏈尾和刪數(shù)節(jié)點(diǎn)是弱關(guān)系,那么刪數(shù)成立可以刪”的邏輯的話,你可以這么去想這個(gè)問題。針對于此例而言,如果r7c3(7)和r2c3(5)是弱關(guān)系,就意味著兩者不可同真,也就意味著,當(dāng)r7c3(7)為真的時(shí)候,r2c3(5)就必然為假。這樣就可以說明當(dāng)r7c3 = 7時(shí),r2c3 <> 5了。

確實(shí)我們有r7c3(7)-r2c3(5)。因?yàn)樗鼈兺鏁r(shí),觀察c3,針對于4、6、7來說,數(shù)字6就無位置可填了,就這樣矛盾了。所以弱關(guān)系得以成立。

剛才說到了,因?yàn)槿蹶P(guān)系的緣故,所以r7c3(7)為真的時(shí)候,確實(shí)可以確定,r2c3 <> 5。所以,因?yàn)檫@樣的緣故,本應(yīng)該產(chǎn)生的467隱性三數(shù)組也可以刪掉r2c3(5),所以r2c3 <> 5也是結(jié)論的一部分。

這條鏈的刪數(shù)結(jié)論的說明甚至用到了隱性毛刺數(shù)組才得以解釋,像這樣的鏈結(jié)構(gòu),不能直接得到全部刪數(shù)的鏈,則可以稱為一種間接刪數(shù)的鏈。

至此,ALS的內(nèi)容就全部結(jié)束了??梢钥吹?,ALS的例子非常有趣,而且靈活。在我們平時(shí)運(yùn)用和觀察之中,將變得非常有用處。


第 35 講:毛刺數(shù)組的評論 (共 條)

分享到微博請遵守國家法律
辰溪县| 会昌县| 泰州市| 长沙市| 新巴尔虎右旗| 出国| 章丘市| 呼玛县| 西峡县| 阳原县| 瑞金市| 德钦县| 三亚市| 靖西县| 美姑县| 襄樊市| 鄱阳县| 抚宁县| 桂林市| 鄂托克前旗| 吉安市| 宿松县| 福建省| 政和县| 安远县| 茶陵县| 阜宁县| 阿鲁科尔沁旗| 凤冈县| 靖边县| 万安县| 新野县| 永善县| 前郭尔| 明水县| 海安县| 八宿县| 曲水县| 河池市| 武夷山市| 盐边县|