直观和局标技巧在全标下的样子
Looking of Direct & Partial-Marking Techniques in Full-Marking Grids
最后更新于
Looking of Direct & Partial-Marking Techniques in Full-Marking Grids
最后更新于
为了更好地衔接后续的技巧,我还是想贯彻之前教程的样子,单开一个篇目给各位介绍一下前面全部数独技巧,在全标状态下的样子。
当你在看到这些长相后,你以后就不愁看不懂后续下结论的时候为啥图长那样了;另外,我发这些图也是为了体现一下配色方案的约定俗成。后面所有的技巧,配色方案都会采用这样的方式来给各位展示,就不再变动了。
先说唯一余数。
可以看到,唯一余数的结论是 r9c1 = 1
。不过如果你忽略掉圆圈的话,其实可以看到的是,这个位置其实就一个候选数。这便是全标状态下最简单的情况。候选数的由来不就是数数么。既然只有一个候选数,那么自然它就是唯一余数了。
之所以全标模式下,把唯一余数放排除之前,有个重要的原因就是,因为它更适合在全标模式下使用。我们大家都知道唯一余数在直观层面都难找得很。但是在全标状态下,它都很容易被发现。所以,当你在做全标题目的时候,就适当调整一下技巧的优先级次序。
如图所示,排除的话会稍微麻烦点。
在全标视角下,虽然你仍然可以使用 r2c3
和 r6c2
的数字 6 来作排除,但是我不是来说这个的。在全标下,b7
里填入 6 的位置只有 r8c1
。你可以仔细看看 b7
里所有空格的候选数排列情况。显然,只有 r8c1
有 6 这个候选数,而别的三个格子都没有。所以,不是你填还能是谁填?
如图所示,直观视角我们可以使用数字 4 来作排除。不过在全标下,我们需要看的是候选数的分布。在 b1
里,数字 4 只出现在 r12c2
里,这样就有了区块的概念了。
然后根据区块,我们可以得到 r69c2 <> 4
的结论。
这个是宫区块,因为区块下在 b1
里。下面给各位看一则行列区块的例子。这个例子给各位自己看了吧。
下面我们来看显性数组。
如图所示,这个题的结论是 r46c3 <> 69
。当然很明显 r4c3
也没有 9,只是这里我们用这个结论把它表达写简单一些。
下面我们来看一下显性三数组和显性四数组。
然后我们来看显性四数组。
如图所示,这是个隐性数对。从全标下来说,b6
填入 5 和 8 的位置只有 r56c7
两个单元格。所以,r56c7
不能填入其他任何的数字。
可以看到,它除了这些结论外,还有别的结论。这是因为,在去除掉 r56c7
的其他数后,它就只剩 5 和 8 了,会变成一个显性数对。然后,我们又可以得到同列的别处不能填 5 或 8 的结论。
这里是我把这两个逻辑整合在一起了,因为只要出现这种样子的数对,就必然会从隐性数对变为显性数对,然后删掉同列别处的位置(当然,也不一定非得同列,可以同行或同宫)。
下面我们来看隐性三数组和隐性四数组。先是隐性三数组。
再来看看隐性四数组。
可能你会好奇,为什么之前我在介绍数组的时候,规格只到 4。是不存在 4 以上的情况吗?还是说它过于罕见导致没有题或者不想讲(反正也遇不到)的原因吗?
实际上不是的。在最开始我们就提过一点,数组其实只有一种,只是因为视角不同被分成了两种形态。分成两种形态的原因自然是观察难度的不同,以及逻辑推理的不同。但是从本质上来说,其实它们是一样的东西。
下面我们来看一则例子,以说明这两个最终是等价的。
请看这个题目。这个题目存在一个隐性数对结构(左图),删除的数字是图中红色的 6 个数字;而这图同样的宫内存在一个显性四数组(右图),删除的也是这 6 个数字。
这冥冥之中告诉我们它很有可能不是巧合,就是故意这么安排的。那么,这是题目的设计如此么?我们再来看一个例子。
如图所示。这是另外一个题目。这个题目左图有一个显性数对,它的结论是这三个删数;右图是在同样的行上存在一个隐性三数组,它的结论仍然是这三个删数。
可能你会有所疑惑。两个数组涉及的数字都不一样,凭什么删数恰好都能完全一样呢?这真的不是巧合吗?
不是的。它不是巧合。它就是数组的一个特征,显隐性互补(Law of Complement):
如果你发现了一个显性数组,那么这个所在的区域下,同时也存在与之互补的隐性数组,使其删数完全一致。另外,显性数组的规格和隐性数组的规格,应等于整个这个区域下的空格数量。反之亦然。
怎么理解呢?比如说例子 1,b4
里一共有 6 个空格。其中隐性数对是 2 个单元格,显性四数组是 4 个单元格,刚好满足 2 + 4 = 6 的情况;而例子 2 里,r3
里一共有 5 个空格。其中显性数对是 2 个单元格,隐性三数组是 3 个单元格,也恰好满足 2 + 3 = 5 的情况。
这个互补特征客观成立的点,在于显隐性数组两方,使用的单元格刚好不同。所谓“刚好不同”,是说显性用的格子,隐性一个都不会用。反之亦然。而整好,显性数组用的格子和隐性用的格子全部列到一起,就是整个这个区域下的所有空格。这是互补的本质原因。
那么,这种互补为什么就奏效了呢?请仔细思考一下。显性数组的删数和隐性数组的删数特征都是什么?显性数组一定删的是数组用到的这些数字,而隐性则刚好相反。举个例子。如果一个显性数对用的数字是 5 和 8,那么它的删数也必须得是 5 和 8。而如果一个隐性数对是 5 和 8 的话,那么它的删数只可能是 5 和 8 外的其他所有数字(1、2、3、4、6、7、9 这些)。从数字上讲,它们删数的“取值范围”是互补的——能够凑成一组完整的 1 - 9。
只要我们保证单元格使用完全用满全部的空格,那么所有的数字由于自身就是互补的删数状态,那么我们就可以使得视角从显性转为隐性,或者隐性转为显性,而删数可以保持纹丝不动。
下面我们来解释另外一个问题。为什么我们学到的数组,规格只有 2、3、4 三种情况呢?这里我们要稍微用一下数学不等式的思维,不难的,请放心。
首先,我们知道,显性数组和隐性数组的规格总和等于这个区域下所有的空格数,那么我们使用字母 来表示指定元素的数量的话,那么我们不难得到这个式子:
我们将它们移向等号的同一侧,然后使用 的说法将其代换一下,于是我们就有了:
我们使其这么进行一轮式子变形,就有最下面的这个结果。
我们将这里的数字 9 当成一个定值,而不是一个具体的数。既然是定值,那么我们就知道,左边三个数的和一定是个固定结果。
由于求和等于定值,这意味着左边三个元素,一旦有其中一个数变大,那么剩下两个数的和,结果一定就会变小,才能保证结果是一个定值。
我们不妨为了让 和 两个数都尽量大,那么我们只好让 了。那么这个式子在极端情况下会变为这样:
现在我们知道,显性数组和隐性数组的关系一定是一个变大另外一个就会变小的。那么,其中一旦有一个数超过了 5,另外一个数就会变到 4。变为 4 意味着这个数:
保持求和为 9;
比互补的那个数组的规格要更小。
尤其是第二点。比如说显性数组规格开始等于 5 了,那么隐性数组就必须等于 4 以保证求和结果为 9(如果还有非空格的话,那么这个数还会更小)。但是,就这么光看极端情况的话,4 就已经比 5 还小了。这就说明了一点:我们无法让数组规格超过 5——因为互补的那一边一定会有一个规格更小的在等着呢。
这就是为什么数组没有规格超过 5 的情况:虽然理论成立,但实际上根本派不上用场。
有些时候,互补过去可能看起来并不是那么正常。下面我们来看一则例子。
如图所示,左边是一个隐性数对。按道理来说,取出其他空格就可以直接转为显性四数组(因为空格就 6 个,2 + 4 = 6)。
但是仔细看一下,其实不难发现到的是,右图的数组 4、6、7、8 其实是不太合理的。因为它其实可以只用三个单元格:r8c236
就行。这三个单元格的数字 6、7、8 已经足够构成显性数组。把 r8c7
招揽进来看起来并不是那么合理。
这个问题我们要先从互补性出发来解释它。首先,互补的时候,我们需要取出 r8
里所有没用到的空格一并形成数组结构,这使得冗余的部分 r8c7
会被纳入进来。其次,从规则上讲,显性数组本身就是看单元格内部是否在排列上形成占满的思维。三个的很好理解,四个的其实也不是不能理解。强行理解的话,你可以认为里面仅出现了 4、6、7、8 四种不同的数字,刚好在四个单元格里。为了尽量保证数组内部填充不会出现矛盾状态(数字重复什么的),我们会优先先去给可填位置更少的数字优先安排空格填进去。显然,数字 4 只有一处位置可填,所以我们“暂时”让 4 填在 r8c6
。然后,其他的 6、7、8 分别安排在旁边的三个单元格 r8c236
里,似乎也不是不能形成四数组的形式:确实 4、6、7、8 把四个格子的填数机会给占满了。既然席位全部使用完了,那么我们自然就不难想到,同一行的其他单元格就没有机会填入 4、6、7、8,自然就可以使其产生合适的删数。只不过,这里的 4 安放尤为特殊:它仅有一处可填。仅有一处可填意味着 4 最终的摆放只可能在这个单元格上。
这是最难理解的点,也是破解这种奇怪的数组的关键点。数组的本质是,里面只能填入这些数字。“只能”意味着数字不论如何,在这个区域的别处,都不会填入,而填写的最终位置,尽可能在数组内部的这些格子里进行排列组合。如果它有两处,那么最终数组涉及的这个/这些数字,就只有这两处位置放,不是 a 就是 b;如果有三处,就是 a、b、c 来回换呗。那如果就一个位置呢?那我们只能让它就是这个数了。
如果你还理解不了,也没有关系。大不了你回去看看这个题。这个题里,6、7、8 的显性三数组是客观成立的。倘若我们先找到的是这个三数组,那么 4 就不会被纳入进来的话,那么它的删数就会算上 r8c7(78)
。而要使得这个 4、6、7、8 显性四数组整体成立,r8c7
客观上还真不能存在除了 4、6、7、8 以外的数。那么,既然三数组成立了,r8c7(678)
就都能删掉。删掉之后,不就真只剩一个数了么?直接唯一余数,得到 r8c7 = 4
。
不论哪种理解方式,这种情况都是可理解的。换言之,这种数组合法,但是有病。说这个的目的是告诉你两点:
有些时候,显隐性互补后会补出来一个合法但有病的数组。这种数组的特征是,规格很大,但内部其实存在一个规格更小的数组,换言之,其中有一些格子可以不用,数组照样能成立;
显隐性互补的特性在这种情况下用起来并不爽,而我们强行去理解它的本质,其实还是为了使得显隐性互补这个规则,在任何时候都客观成立,仅此而已。
那么,右图里的 r25c7(4)
的删数为什么成立,想必就不用我多解释了吧。
好了,所有直观技巧和局标技巧的全标状态就说完了。从下一篇文章开始,我们将正式进入到后续技巧的学习之中。