第 23 讲:全双值格致死解法
这一个部分要讲解一个针对于全盘内所有没有填数的单元格的结构,而这一节的原理稍微比较抽象一些,而且内容也比较多。希望你同之前一样,拿出草稿纸写写画画。
Part 1 标准类型(BUG Type 1)

如图所示,我们观察全盘,发现一个神奇的现象:全盘除了r8c9这一格外,其余所有的单元格都有两个候选数,唯独r8c9,有三个候选数。而且,这个结构特殊之处在于,结构所有区域(每一个行、列、宫),均包含规格参差不齐的数组结构,而这样的结构正是由于这个原因,没有任何的矛盾推论。这就很奇怪了,并促使我们想思考一个问题:居然这么神奇的结构,都没有删数的结论,我坚信它是有逻辑得到删数结论的,而这个逻辑到底是怎么样的呢?
如果我们去掉r8c9的候选数1,先当r8c9(1)不存在。于是,你会发现一个神奇的现象:所有没有填数的单元格里,恰有两个候选数。
既然所有的空单元格内都是两个候选数,而每一个空格涉及到的所有区域下,所有空单元格都恰好能够构成数组结构。比如b3,所有空单元格{r2c8, r3c9}直接可以构成36数对;又如c8,所有空单元格r2468直接可以构成1367四数组,所有区域都是这样。
好像是个废话?好像r8c9(1)去不去掉也是这样的吧?看我接下来怎么推导哈。
既然每个单元格都是两个候选数,而且都能找到和它一起构成数组的其它单元格,那我们随便选取一格,来假设填数。随便选取一格,比如说r2c1,有1和6两个候选数。我们假设就会分为r2c1 = 1和r2c1 = 6两种填数情况。
又是假设?这么麻烦?我们不需要假设填完全部情况,而是简单思考一下就可以了。试想一下,全盘既然都是两个候选数,那又可以构成数组结构,那么只要有一格填完数字,而每一个单元格都可以找到和它一起构成数组的其余单元格,于是就可以把这个数组填完。比如说r2c1,与之构成数组结构的有r2c128的1、3、6三数组、r23c12的1、3、6、9四数组以及r237c1的1、6、9三数组。既然r2c1填入其中一个数了,那这些数组理所当然地可以根据这个数推理而得到剩下的部分。由于全盘都是两个候选数的单元格,那r2c1填入其中一个数值,就必然会形成一种填法。同理,r2c1填入另外一个数值,那就必然会形成另外一种填法。随即形成两个填数完全不一致的盘面结果。
我们再详细阐述一下。就比如一个三数组,又因为这个结构全部单元格都是两个候选的缘故,三数组的话,三个单元格的候选数情况就只可能是这样的:
ab、ac、bc
那么如果{ab}这一格填a和填b,会产生两种不同的情况:
情况1:a、c、b
情况2:b、a、c
每一个单元格在其行、列、宫上都能够找到对应的数组结构,所以每一个行列宫都可以发现这样的形式,直到完成盘面。
每一个两个候选数的单元格,意味着每一个单元格都有两种不同的填法,而假设其中一格,都能使得这样的单元格直接出数。所以全盘的空单元格都可以根据一个单元格,其余单元格会受到此处填入的情况影响,导致其它位置上的填数也会产生变化,即“牵一发而动全身”。
因为有两种填法,所以这样的填法一定会产生两个填法完全不一样的盘面结果。由于全盘都有数组结构的缘故,数组的互换情况就导致了两种完全不同的填数方式。如果其中一个盘面是正确的话,那么另外一个盘面就也应该是正确的。
试想一下,数独只有一个答案,怎么可能出现两个盘面都是正确的的情况?所以两个情况都应该是错的才对。因为刚才我们说到过,只要其中一种填法是对的,那另外一种填法因为数组的互换,也应该是正确的。两个都是对的,这明显不满足数独唯一解的要求呀。所以,这样的结构,即全盘都只有两个候选数、每一格都能够构成数组的特殊结构,就不应当单独存在于盘面之中。所以,最初的假设(假设r8c9(1)消失于盘面之中)就不正确了。反过来,结论就应为r8c9 = 1。
这个结构称为全双值格致死解法(Bivalue Universal Grave,简称BUG)。
BUG,全名Bivalue Universal Grave,直译的中文叫“双值-全-坟墓”,所以第一个版本的翻译是“全双值坟墓”,后面发现翻译不大对,并且体现不出本质意思后,就被翻译为了“双候选数致死解法”,后面发现,这个说法还有歧义,随后又被翻译为“全双值格致死解法”,里面的双值格(Bivalue Cell)指代的是里面有只有2个候选数的单元格。
这里介绍一个东西。有多少个候选数就称为“多少值格”,有三个候选数的单元格就称为三值格(Trivalue Cell),而一般多于两个候选数的单元格都称为多值格(Multivalue Cell)。
还有一个问题。这个结构为什么叫“致死解法”呢?为什么不叫“致命”而是“致死”?这是因为,在r8c9(1)去掉之后,结构本身不是出现UR、UL、AR以及拓展矩形那样、内部有两种不同的填法,却对剩余盘面不造成其它删数影响的形式,而结构本身内部就已经是无解的了。刚才我们就说到过,如果其中一种填法是正确的,那另外一种填法肯定也是正确的,这就出现两种不同的填法都正确的现象,这违背了唯一解的要求。所以结构的两种填法,它们的内部都是不可能存在正确的填法的,换句话说,怎么填都会出现违背数独规则的矛盾。这一种现象,我们称为“致死”,就不再叫“致命”了。
那么,结构到底是怎么看到这个结论的呢?难道我还要把r8c9的所有候选数一个一个地试一遍才知道?当然不是,接下来我就告诉大家怎么看到它。
Part 2 原理进一步剖析
2-1 原理说明
之前说到两点:
只有一个三值格,其余都是双值格;
每一个单元格都能找到某个或某些同区域(行、列、宫)的单元格与之构成数组结构。
是满足结构的必要两点。那么,针对这两点,我们可以得到一个便于观察的推论:每一个候选数在其所在的行、列、宫下,均有两个相同的数。文字可能叙述不严谨,来看一下我举例你就知道了。

当r8c9 <> 1时,每一个数在其所在的行、列、宫上恰好都有两个同样的数。比如r3c9(3),r3c9(3)所在的行(r3)、列(c9)和宫(b3)内,都恰好有两个3;又如r7c1(9),r7c1(9)所在的行(r7),列(c1)和宫(b7)内,都恰好有两个9。
那么,这里提出一个方便后面叙述的术语词:真数(True Candidate)或非BUG候选数(Non-BUG Candidate)。它们指的是和BUG结构无关的候选数,或者说是那个正确的数字,比如盘面之中r8c9(1)就是真数。当然,后面的题目有可能是多个真数的,不过这多个真数之间的关系并非像这里r8c9(1)一样直接正确。
所以,我们在找的时候,就把不是出现两次的数字都给它找出来,就可以了。但是,前提是,这个结构在去掉这样的数字之后,是能出现BUG致死形式的。
2-2 两个不能用BUG的例子

考虑这个示例。这个盘面可不可以形成一个BUG致死形式呢?不可以。为什么呢?因为观察r7,你会发现其中有三个有29、39、49这样排布候选数的单元格,这便让数字9直接在r7上出现了3次。而它们都是双值格,很明显不可能在这三格上下手寻找真数。所以我们无法让此处r7c6的其中任意一个候选数去掉之后,形成BUG致死形式。因此这个盘面也不可以直接构成BUG。再来看一个示例。

那么这个示例又能不能形成致死形式呢?也不行。因为r7c5(3)看似在r7上确实出现了三次,但c5只有两个3,所以就这一点而言,如果进行假设时,把r7c5(3)去掉的话,c5的3就直接出数了,破坏了BUG原有的模样,所以这也不属于BUG的盘面。
Part 3 区块类型(BUG Type 2/BUG + n)
3-1 同数BUG + 3

如图所示,全盘仅剩下三个三值格,我们把疑似真数的候选数找出来,它们分别是r1c5(7)、r3c4(7)和r6c5(7)。此时,把它们仨同时去掉,此时盘面的结构就一定会形成BUG致死形式(上面罗列的那两点要求)。
导致BUG致死形式就意味着,结构不应直接存在于盘面之中;反过来,r16c5(7)和r3c4(7)也就都应该为真数。那三个真数就意味着都是正确的吗?显然不是。多个真数的BUG结构,真数应该是“都不可同时消失”,而不应该是“真数全部都正确”。换句话说,r16c5(7)和r3c4(7)里,至少有一个是正确的填数。那么不管谁是正确的,它们都看得到的地方(共同对应的地方),就不应该是正确的。即r3c5 <> 7。否则,r3c5 = 7会同时让所有的三个真数全部消失,违背推导的结论。
之所以说“不可同时消失”而不是“全部正确”的原因很简单:真数全部消失就使得盘面直接形成BUG的致死形式,所以假设错误,所以原假设“同时消失”的相反情况才是结果,即“不可同时消失”。
这个结构和之前介绍的UR里的“类型5”一样,它属于类型2是因为可以看成“广义的区块”,所以这个示例属于区块类型。
虽然这里看似在c5里,7出现了四次,已经不满足要求了,不过之前说的出现三次,是针对于每一个真数讲的,如果这一列恰好有两个相同的数字作为真数的时候,这个数确实会在此列出现4次。不过,要想找到这些真数,依然得从多值格里去寻找,因为双值格里是根本不可能产生真数的。
而且,看到技巧名后面的“BUG + n”了吗?由于BUG的特殊性,所以这个技巧有一个特殊的名字,叫做BUG + n。这个n值表示的是真数的总个数,比如上述例子里,有三个真数,就称为BUG + 3。当然,我们也可以把标准类型的BUG称为BUG + 1。
实际上,UR也有类似的逻辑(UR + n),但在UR里我们很少这么用,因为它的结构基本上已经固定了是分属于两个宫里的四个构成矩形的单元格,而并不是像BUG结构一样,真数的位置可能发生任意的变化。
最后啰嗦强调一下,“真数至少有一个正确”是包含“所有真数同时正确”的情况的,所以分析的时候,不要漏掉情况,否则会导致思维不严谨,从而导致结构结论的判定错误。
接下来我们再来看一些示例。
3-2 异数BUG + 2

如图所示,我们找到了全盘的所有真数,一个是r4c9(9),而另外一个是r5c9(4)。可以知道的是,真数不可全部同时消失,所以r4c9(9)和r5c9(4)至少都得有一个数是成立的。那么我们就需要找到一个删数,使得它们都能够排除掉,这样的数即为结果。
可以发现,r4c9(4)就是这样的数。如果r4c9 = 4,显然r4c9 <> 9,而且它也能使得c9里其余位置不能填入4,所以r5c9 <> 4,这样就使两个真数都消失了。虽然它破坏了BUG结构,但实际上我们得到的结论“两个真数至少有一个成立”这一点并不依赖于BUG,所以结论依旧可以使用,而且它的这般推理已经使得真数全消失了,使得出现矛盾。所以,r4c9 <> 4。反过来理解也可以:可以发现,所有真数都能排除r4c9(4):r4c9(9)填入后一定会使得r4c9 <> 4(同一个单元格显然不能放下两个数);而r5c9(4)填入后也一定会使得r4c9 <> 4(同一列不能填两个4)。所以呢,由于所有真数全部都能排除掉r4c9(4),故r4c9 <> 4。
这种结构巧妙的地方依然是利用了前一个示例里的逻辑,找到三个真数都能排除的候选数,因此它依然被放到了区块类型里,因为区块类型的核心思想就是“找交集”。这个例子有两个真数,所以称为BUG + 2。
3-3 异数BUG + 2的另一则实例

如图所示,这一个示例和刚才的例子的逻辑几乎完全一样,不过它单独被我列出来是因为,这个例子的真数不好被发现。因为4和5在c9都是三次,而这一点并不能断言真数4和5到底在r78c9的哪一个单元格之中。
我们此时就得按行来分析。我们要找的是每一个区域都出现3次的数,所以既然列和宫都区分不了,那么只能看行。r7里数字5出现了三次,所以r7c9(5)才是真数,所以相对地,r8c9(4)是真数。
找到这一点后,我们就可以使用刚才的逻辑来得到结果:r7c9 <> 4、r8c9 <> 5。这一点就自行分析了,我在此处就不需要过多阐述,因为这里的删数逻辑和上一例的是完全一样的。这个技巧依然用了两个真数,所以也是BUG + 2。
3-4 真数在同一个单元格

如图所示,这个例子的逻辑和之前的完全一样,不过它长相特殊,所以我们再次叙述一下这个题目的逻辑。
首先,这个题目的真数有两个,但全部产生于同一个单元格r5c4,真数是r5c4(68)。显然,真数一旦出现,就意味着它们不可同时消失。也就是说这个单元格里要么r5c4 = 6,要么r5c4 = 8。所以r5c4的填数就跟除了6和8以外的数字没有关系了,因此可以安全地删除掉它们。
3-5 异数BUG + 3

如图所示,这一示例里,所有真数位于r4c8(1)、r7c8(6)和r7c9(1)。它们不可同时消失,即至少有一个数是正确的填数。那么,首先r4c8(1)和r7c9(1)都能立刻删除掉r7c8(1);而r7c8(6)成立时也能够立马删除掉r7c8(1)(同一个单元格不能放两个数),所以r7c8(1)显然就是这三个真数都能排除的候选数了,因此r7c8 <> 1。
这个例子是三个真数了,所以是BUG + 3。可以看到,这则示例就比较灵活一些了,真数甚至可以涉及不同的数字,也可能存在删数的结果。
3-6 异数BUG + 3的另外一个实例

如图所示。这则示例里,有三个真数,但只分属于两个单元格。真数分别是r4c4(25)和r5c4(8)。它们不可同时被去掉。
那么,显然r4c4(8)是三个真数都能排除的候选数,因此,r4c4 <> 8。
3-7 异数BUG + 4

如图所示,这个例子是BUG + 4,即有四个真数,而推导的逻辑在之前已经反复提到过了,所以该示例请你自行进行推理。这则示例里的所有真数分别是r3c3(4)、r8c12(4)和r8c3(8)。
3-8 异数BUG + 7
Emmm……我想你看了肯定会吐。

这个图是我之后才找到的,觉得比较有意思就加进来了。
Part 4 数组类型(BUG Type 3)
因为BUG里的真数的位置的特殊性,它的位置是任意的,所以它的数组类型可能比普通UR类型的数组类型更难理解透彻。
4-1 BUG + 显性数对 1

如图所示,发现该例子里所有的真数一共只有两个:r4c8(9)和r9c8(8)。它们不可同时被去掉;而如果真数全部都成立(显然是可能的,因为“不可同时消失”包含了“全部都成立”的可能)的话,r1c8将无法填入任何一个合适的数字,所以矛盾。所以,实际上,真数必须得只有一个是成立的,不能多,也不能少。
不论是8还是9,都可以和r1c8形成一个待定的数对结构,我们能确定r189c8里必然会有一个8和一个9,所以其余位置都不能再填入8和9了,因此可以删除掉它们。
我们再来看一则示例。
4-2 BUG + 显性数对 2

如图所示,这一则示例里一共有三个真数:r6c36(4)和r6c4(2)。
有三个真数就意味着我们需要讨论四种情况:有0个真数成立、有1个真数成立、有2个成立和有3个成立。
显然,有0个成立是不可能的,因为它们全部去掉了,使得出现致死形式;全部成立也是不可能的,因为真数里包含相同的数字,还同一行,这样一定会产生矛盾;所以还剩下两种情况,有1个或有2个真数成立。
如果有两个真数成立的话,那么只可能是r6c3或r6c6其一的候选数4和r6c4(2)一同成立了,这是不可能的,因为r6有一个单元格只有候选数2和4——r6c5,如果这两个真数同时成立将立马使得r6c5无法填入数字。所以这样也是矛盾的。
所以最终的结果就只有一种情况:三者只有一个才是正确的数字。不论是谁成立,都可以和r6c5(24)形成待定的显性数对结构,使得r6里一定的2和4一定只会出现在r6c3456里,所以其余位置都不能够放2和4,删除掉它们。
这两则示例都是通过BUG带上待定的显性数对来使用的,即都绑定了数组,所以它们属于数组类型,即类型3。
接下来我们来看一则带显性三数组的示例。
4-3 BUG + 显性三数组

如图所示,示例一共存在两处真数,一个是r6c3(4),另外一个是r6c7(6)。依然按照有0个、1个、2个真数是正确的填数这样三种情况讨论,发现有0个真数一定违背要求(形成BUG致死形式)、有2个也会违背要求(使得r6c19无法填数,或者可以理解为r6c1379四个单元格只剩下1、4、6三种不同的候选数,填不满四个单元格)。所以,只有一种情况成立:只有一个真数是对的。
那么,不论4还是6对,r6c1379里必然有一个1、一个4和一个6(构成显性三数组形式),所以删除掉r6其余单元格的1、4、6。
4-4 BUG + 显性四数组

如图所示,这个例子有些复杂的是,它所带的数组的规格有点大。首先,我们依然按照真数有0、1、2个成立的情况来分析。有0个必然出现致死形式,而有2个成立有立马会让c9出现五个单元格只能放下2、4、7、9四种数,显然是不够放的,有一个单元格必然会空出来,所以也是违背要求的。
所以,只能有一个真数是对的,那么,r14579c9里会产生一个2、4、7、9的显性四数组结构,进而得到删数(c9里其余单元格的2、4、7、9)。
4-5 BUG + 显性五数组
恐怖的是,BUG的结构过于特殊,使得显性五数组(Naked Quintuple)出现在了结构里。这是我们第一次使用到显性五数组来做题。

如图所示,结构里包含r5c4(1)、r5c5(6)和r6c5(9)三个真数。按照有0个、1个、2个、3个真数来讨论填数情况:
有0个真数是对的是违背要求的,因为这样一定会使得题目形成BUG的致死形式;
有3个真数是对的是违背要求的,因为全部都对的话,1、2、4、6、9五个不同的数字将放在7个单元格里,这样会剩下两个单元格放不下数字;
有2个真数是对的是违背要求的,因为不论哪两个数对,1、2、4、6、9都无法放下6个单元格,总会有一个单元格会空出来。
所以,最终我们就只有一种情况:即三个真数里只有一个是对的。
不论是谁对,这样就恰好会在r4c46、r5c45和r6c5的其一、以及r56c6里产生一个显性五数组结构,所以其余单元格都不能再填入数字1、2、4、6、9,删掉它们。
那么,显性数组的版本我们就讲完了。接下来我们再来看几则带隐性数组的版本。
4-6 BUG + 隐性三数组

如图所示,隐性数组的讨论可能更为复杂和坎坷一些。我们依然参照刚才的方式,分情况讨论真数的成立性。
如果有0个真数成立,根据数独规则,显然不允许出现,因为直接形成了BUG结构的致死形式了;而如果真数全部成立的话,注意到r8c3是只有候选数2和7的,如果真数都成立,那么这个单元格就无法填入合理的数字了,所以依然是矛盾的。所以,真数有且仅有一个成立。不论是谁成立,剩下的部分都将形成一个2、3、9的隐性三数组结构。因为不确定2和7哪个真数成立,故删数只可能在r3c3上。
但请你注意的地方是,这里的2、3、9隐性三数组的形成并不是随意形成的,因为注意到结构外部是含有2的(比如r8c3(2)就直接阻止了涂色单元格形成隐性数组的情况)。那为什么说结构还是可以成立呢?这是因为,r8c3是关于2和7的双值格,而不论假设真数的其中哪一个成立(假设我们用字母a表示),那么这个双值格的另外一个数就必然会显现出来(我们叫做b),而这个数字b恰好就是另外一个真数的数值。所以,实际上假设真数a成立,那么必然在r6c3里的真数b就自动消失了,因此,三数组这一次是“迂回”证明的。
这个结构带了一个隐性三数组。
4-7 BUG + 隐性四数组

自己看吧,我就不解释了。
4-8 BUG + 隐性五数组

这个也自己看了。
4-9 为什么BUG没有带隐性数对,却带有五数组?
为了描述的逻辑结构更为清晰,我们先来说说看,为什么有五数组。
五数组之所以存在于BUG里,是因为它的互补并非是严格的,和之前的数组不同,BUG的真数是可以放在任意位置的,这便使得套用数组逻辑的时候,完全可能让真数放同一个单元格,导致数组形成的时候需要少判定一个单元格。我来举例说明这个说法。


如左图所示,这是我们刚才介绍的隐性五数组的示例,实际上,你可以看互补视角,转变为1、2、4、6、9的显性五数组结构。而实际上,这里不论是显性数组还是隐性数组,都共用了真数涉及的单元格;而真数大多挤在同一个单元格里。
下面我们再来说说,为什么没有隐性数对。
隐性数对在之前UR和AR甚至是UL之类的技巧里,都出现过,但是为什么BUG不行了呢?是没有示例还是根本就不可能存在隐性数对呢?
答案是,根本不可能存在。下面我们来简单证明一下。
首先,我们来思考有两个单元格放真数的情况。如果一个盘面有若干真数分布到两个单元格里的话,如果是隐性数对,就必须意味着外部还存在一个单元格与之构成隐性数对。例如下图。

如果全盘一共有两个真数,且都在c4,一个是r3c4(3),另外一个是r4c4(1)。
那么为了保证隐性数对的出现,我们必须在c4的其余单元格里加入一个单元格(此时隐性数对应当是1和2,因为真数所在的单元格里的额外候选数只有1和2)。此时我们假定这个单元格在r5c4,且只有1和2,那么OK,结构成立了。但实际上你可以发现,r45c4是一个显性数对,它的存在破解了BUG的出现,所以两个单元格有真数的情况肯定是不可能出现了。
那么更多呢?比如三个单元格呢?思路完全是一样的,所以我们就不讨论了。因此,实际上可能的只有一种情况:所有真数都只在一个单元格里出现。
考虑如下情况。如果只有一个单元格能放下真数,那么构成隐性数对的几率就会更大一些,不过……

如图所示,假定全盘只有两个真数是r4c4(23),这样的话,要想构成隐性数对,那么额外的数字1就必须和c4里的另外一个单元格形成隐性数对。这样就OK了。不过,真数需要有一个是成立的,这一个单元格必须被占据,所以实际上额外的候选数是必须被我们删除的,所以这显然也不可能构成隐性数对;而从另外一个方面来看,即使r4c4(1)可以存在,那么构成的两个单元格r4c4和r5c4实际上已经自动地形成了隐性数对,而这一点其实跟BUG毫无关系。所以,一个单元格放真数也不可能存在隐性数对。
所以,实际上,BUG的数组类型是不可能带隐性数对来推理的。
Part 5 共轭对类型(BUG Type 4)

找到全盘的所有疑似真数,然后去掉看是否构成BUG致死形式。结果这个例题比较神奇的是,不同的真数可以在同一个单元格内。这个例子有四个真数:r1c7(26)和r2c7(34)。
如果它们全部去掉,的确会形成BUG致死形式,所以它们都应该是货真价实的真数。那么,至少都有一个真数是正确的。但是,c7有9的共轭对,意味着r12c7有且仅有一格是填9的。因为9不是真数的缘故,所以其中一格是9,那另外一格就必然只能填真数了。所以这样一来,就跟这两格不是真数或9的其余候选数没有任何关系了,因此可以安全地删除掉它们。
一般来说,共轭对类型的BUG结构一般都会产生与之匹配的数组类型(也就是说类型4的结构一般都会有类型3的身影),比如这个示例,看起来好像没有,实际上你可以对照之前的类型3去找找,它实际上带有一个规格稍大一些的数组结构。
而正是因为如此,所以共轭对类型的示例少之又少,这里仅仅找到了一个看起来比较不像是数组类型的示例作为介绍。
Part 6 待定 BUG(Almost BUG)
下面介绍一种新奇的使用模式,叫做待定BUG(Almost BUG,简称ABUG)结构。
6-1 可能形成BUG致死形式的ABUG

如图所示,这是一个待定的BUG盘面。
之所以说它是“待定的”,是因为这里盘面确实不是合格的BUG盘面。数字4在r5里确实出现了三次,也包含了三值格一格r5c1,但c1却没有出现三次4,宫内也没有;同样地,数字2反而在c1出现了三次,也包含三值格;但数字2在r5和b4里也没有出现三次,也都只有两次。这已经不满足BUG的要求了。但是现在为了用它,我们发现一个神奇的单元格r5c8:如果r5c8 = 2,它就会破除掉4在r5出现三次的影响,而c8上的其余2也都会被删除,即使此时看起来好像c8里的2出现了三次。
在一通推导后的删数结论后,盘面上刚才所有涂色的候选数就变成了这样。

细数所有单元格和候选数,全部出现两次,并且所有单元格也均为双值格,至此,形成BUG形式。故原假设错误,即最终结论为r5c8 <> 2。
6-2 可能形成BUG + 1的ABUG


如左图所示,这个盘面是否是一个合格的BUG盘呢?不是。因为c4里只有三个2,而真数在此列里会产生两个(r2c4(2))。这样一来的话,r5c4无论如何都选不出真数。选2的话,c4就两个2了,扣掉两个真数后,此列就只剩下唯一的一个2,盘面“瓦解”……
所以它不是合格的BUG盘应该有的样子。这种差一点的BUG又怎么用呢?如果我们尝试这样做:如右图所示,我们率先假设r8c4 = 2,那么r8c5 = 8是显然的,于是对上方2和8的影响和删数也就顺带得到了。此时删除掉影响的数字后,盘面变成一个标准的BUG标准类型的局势:全盘空格都是双值格,只剩下一个三值格;其次,三值格位于r2c5,出现三次的数字是2,r2、c5和b2里2都是恰好三个。那么,根据BUG的使用规则,这个2应当是r2c5的真数。
还没完呢。我们是通过假设r8c4 = 2得到的BUG盘面,并得到r2c5 = 2的结论的。那么,这个推理链有何用处呢?r2c5 = 2是我们的结论,这就印证了一点:如果题目唯一解,那么题目就可以依靠r2c5 = 2这一个结论继续往下做,直到全盘结束,得到答案。而这个题目是我给大家的示例,我能保证题目是唯一解的。所以我们可以这么去认为了:一旦盘面能做到r2c5 = 2,那剩下的空格的填数就能立马顺次得到,并出现唯一的结果,而过程无需证明为什么,也不需要你手动根据r2c5 = 2后还一个一个把数字填入到单元格里。说清楚明白一些,就是我们一旦得到r2c5 = 2的结论,因为题目是唯一解的,所以后续的步骤我们都可以不用做就直到题目已经可以完成了。因此,既然题目能通过假设的r8c4 = 2得到r2c5 = 2的结论,那么原来的假设r8c4 = 2也就必须是成立的。题目应当是唯一解的,这就意味着能推理得到r2c5 = 2这一结论的原假设就应该是成立的(毕竟推理是从假设到r2c5 = 2来的)。所以,r8c4 = 2是这个技巧的结论。
那么到这里,致命结构的基础部分就介绍完毕了。接下来我们将进入新的一种数独技巧里面来。
Part 7 BUG最少需要多少个单元格?
一个合格的BUG结构一共最少只会涉及多少个单元格呢?这个答案是11,而这个答案则是通过枚举或构造结构而得到的。一定要注意,BUG的内部是无解的。


如图所示,这是两个只有11个单元格的BUG + 1结构。
不过,BUG最多涉及多少个单元格,目前尚未得到确切的答案,不过我们依然在不断努力寻找最大情况。
总算是把BUG讲完了。你还满意吗?

技巧信息
BUG标准类型:难度5.6。
BUG区块类型:难度5.7。
BUG数组类型:难度5.7+数组规格*0.1+(是显性?0:0.1)。
BUG共轭对类型:难度5.7。
ABUG技巧尚未收录到里面。因为它可能会经过一些比较复杂的推理才能到达这里。现在没有一个比较合适的算法可以绝对地得到这个数值。
名词解释
双值格(Bivalue Cell):一个单元格只有两个候选数。
三值格(Trivalue Cell):一个单元格有三个候选数。
多值格(Multivalue Cell):一个单元格有至少三个候选数。
真数、非BUG候选数(True Candidate/Non-BUG Candidate):通过BUG技巧的推导得到的、它们去掉使得题目必然产生BUG致死形式的那些候选数。
BUG + n:n表示真数的个数。当一个BUG结构的所有n个真数全部去掉后,题目必然导致BUG的可交换、且数字出现两次、全盘双值格的致死形式。