欢迎光临散文网 会员登陆 & 注册

第 30 讲:守护者

2021-06-23 14:25 作者:SunnieShine  | 我要投稿

Part 1 守护者的基本逻辑

如图所示,我们发现,如果把r2c3(4)和r6c7(4)都去掉后,r25、c17和b4五个区域就会出现关于数字4的共轭对,而且恰好成环。那么这会发生什么样的奇妙情况呢?

因为链需要交替存在,所以我们随便选取一个节点作为链头,比如r5c1(4),向上走链结构。我们之前说过一点。强关系的定义下的两个候选数,是一定满足弱关系的定义的,但该用强关系还是弱关系,取决于关系的交替出现情况。也就是说,共轭对肯定是强关系了,不过以r5c1(4)作为链头向上引出AIC的话,那么r2c1(4)和r2c7(4)应为弱关系。随即出现以下链结构:

当我们得到r5c1 = 4时,同时可以知道的是r2c1和r5c8都不填4,于是r2和b6之中,r4c7和r2c7就应当填4。此时发现,r24c7(4)同列,所以矛盾。所以,直接“裸露”出来的五个共轭对首尾成环是完全不可以的,也就是说,r2c3(4)和r6c7(4)不同时为假。所以r2c3(4)和r6c7(4)至少有一个为真,于是删除交集,故r2c7, r6c3 <> 4。

这个技巧称为守护者(Guardian)。很不幸的是,它的逻辑很复杂。接下来我们再来看一则示例。

如果{r2c7, r3c5, r68c6}(5)全部去掉后,剩下的r68、c57和b8里存在五个连续的共轭对,并使之成环。显然,这一点是不允许出现的,所以假设矛盾,即r2c7, r3c5, r68c6里必须至少有一处是填入5的;因此删除交集,即r2c6 <> 5。

接下来我就来讲一下原理,这会让你觉得技巧寻找和理解起来更加轻松一些。

Part 2 守护者理论的证明

那么,为什么说,只有大于3且是奇数个共轭对两两连接、首尾成环时,结构必然不存在呢?实际上,我们可以如此思考。

共轭对要求两处填数必须一真一假,那么一旦有一个数为真,那另外一个就必须为假,反之亦然。如果有奇数个的话,顺次推导下去,必然会遇到开头和结尾两处的数同真假。而结构成环,而且还是共轭对,所以这两处必须也要求真假性相反(一个真一个假)。所以这已经违背了要求,所以该结构的内部是无解的(无法找到合适的填法)。

这一点和致死形式类似,但不同。BUG结构的致死形式确实内部无解,但BUG属于致命结构一节的内容,它基于题目唯一解,而此技巧跟唯一解要求无关。

Part 3 死环

我们再来看一则奇特的示例。

如图所示,感觉略熟悉:感觉有点像是UR区块类型的感觉,也有点像是远程数对。它的逻辑是这样的:

如果r69c3(5)同假时,r69和c3均会产生2、9数对,在删除所有其它位置的2和9后,2和9构成由5个共轭对首尾拼接成环且独立的守护者结构,这种结构显然是不成立的,因为不论怎么填数,始终会存在同一个区域的两个单元格的填数一致,这样便产生了矛盾。所以原假设错误,故r69c3(5)不可同为假,即r69c3(5)至少一个为真。所以,c3的其余单元格都不应该填5,即r24c3 <> 5。

这个结构利用到了数对的删除的特性,随之产生共轭对首尾成环的守护者的出错情况。它使用了两个结构长相一模一样,但候选数不同的守护者结构2和9。这个技巧叫做死环(Bivalue Oddagon),意味着r69c3(5)同假时,内部结构有两个不同数字的守护者合并在一起形成了无法填数的死亡局面。

不过,这样的结构还可以有很多情况。我们来看另外一则死环的例子。

如图所示,可以看到如果我们省去r5c2(6)和r5c7(2)的话,因为绿色的结构是一个死环,不包含别的数字就会导致整个结构挂掉。正是因为如此,我们不能直接消去这两个数字。

但是,这两个橙色的数字(这个6和2)同时都填进去的话,r5c5就没办法填数字了。因此,这两个数字还只能有一个是对的数字。这样的话,r5c5刚好配合r5c2(6)或者r5c7(2)的其中一个,构成2和6的数对结构。因此,r5别的地方就不能填别的2和6了,因此可删去这里红色的2。

Part 4 拓展死环

接下来我们拓展一下死环的结构。正是因为死环有点不像是链,而跟前面的UR这些的结构有点像,毕竟还有别的类型,因此我们可以拓展死环结构。

如图所示,这里r5c9(5)和r9c5(4)均可删除。这一点有点不好理解,我们先把题目放在一旁,我们先来看下单独提出来的结构图。

4-1 构型

现在我们来看一下构型。

如图所示,这样的结构是最开始的结构。显然这样的结构是会挂的结构。不过,我们为了推广结构,我们尝试追加一个格子。

如图所示,但是很显然r5包含三个格子只能放入1和2了,这样肯定不行。那么我们还得继续往上添加别的数字。

如图所示,显然,这样的结构看起来好像没矛盾了。但是实际上也是矛盾的,这一点我们可以通过前面一节的死环的补充例子里看到这样的结构是不存在的。当然,你也可以自己试着推导矛盾:假设我们随便往r2c2填入一个数字。一直往下会得到矛盾:

如图所示。这样的结构肯定会挂。因此,我们添一个数字还不够,还得添加两种类型的数字,于是可以得到这样的结构。

如图所示。只有这样,结构才不会出现直接出错的现象。可问题又来了。这种结构怎么用呢?刚才我们是利用结构外侧同行列的双值格得到结果的,对吧。那么我们继续应该如何让结构生效,变得可以直接删除数字呢?变成下面这样:

如图所示。这样结构只是补充了一个3和一个4到r6c5上去,但结构就可以直接删数了。删除哪些数字呢?我们来试着假设填入一下。按照最简单的办法,我们从r2c2开始分别假设填入1和2两种情况进行讨论,就会得到下面这样的情况。

对比两个图可以发现,我们最终只有数字3和4是稳定出现在r5c46和r6c5这三个格子的,而里面原本存在的1和2因为假设的关系最终无法同时存在于两种情况里。因此,这种结构的最终删数是3和4,删数的范围就是b5的其它格子了。

结构仍然具有推广性质。我们刚才最开始将死环补充了r5c4才构造出了这样的结构;那么我们可以尝试继续补充r4c5这个格子,并再次补充一种数字类型进去。

如图所示。因为我们只多了一个格子出来,所以我们只需要多补充一种数字类型就可以了(比如这里的5是多出来的数字类型),而不是同时多两种数字类型。因为多两种会导致结构无法继续推导;但不补充数字类型,还是使用1、2、3、4的话,结构因为多了一个格子,并且和原本补充的3和4出现位置同宫,因此会出现四个格子只能填入1、3和4或者2、3和4这三种数字,导致结构出现错误。

那么,回到这个结构,删数的位置是哪些地方呢?试填一下就知道了:

如图所示,我们可以看到,此时我们依旧按r2c2假设两种填法,可以得到最终b5出现1、3、4、5构成的四数组,以及2、3、4、5构成的四数组。此时只有数字3、4、5三个数字类型是稳定出现的,因此b5可以删除的是别的格子的3、4、5。

那么结构构型我们就看到这里。回到引例。

4-2 引例逻辑解释

如图所示。我们很明显就可以看到,结构是多出来了3、4、5三种数字的,只不过现在4和5的位置有点奇怪,并不是补充在b5里的。我们仍然套用原本的思路,看看是否能行得通。

假设3、4、5三种数字同时消失,结构只剩下1和2的话,显然结构不成立,因为结构不只是死环本身的问题了,还多用了r4c5和r5c4两个格子;但是我们如果只保留结构里3、4、5的其中一种数字的话,结构也是不够成立的,因为之前证明过了:结构至少需要两种数字补充进去。

接着。因为我们基于死环结构,连着补充了两个格子r4c5和r5c4作为使用,所以我们需要至少补充三种数字进去,才会使得结构不挂掉。这一点没问题,对吧。那么,三种数字的情况下,因为刚好使得结构不挂掉,所以3、4、5应当是每一个数字都不可以全部消失,因此,补充的3、4、5,都可以作为删数的条件来使用。于是,结论就很明显了:3所在的宫(b5),结构外的别的位置不能填3;4所在的列(c5),结构外的别的位置不能填入4;而5所在的行(r5),结构外的别的位置不能填入5,因此红色的数字都可以删除。

这种结构基于死环,因此我们称为拓展死环(Extended Bivalue Oddagon)。

至此,我们就讲完了死环的基本逻辑。


第 30 讲:守护者的评论 (共 条)

分享到微博请遵守国家法律