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

第 56 讲:带鱼鳍的宫内鱼

2021-09-08 20:34 作者:SunnieShine  | 我要投稿

接下来我们来探讨宫内鱼的鱼鳍的存在性和存在的类型。

Part 1 结构讨论

如左图所示,这是一个标准的宫内三链列的结构。思考一下标准鱼的鱼鳍的逻辑:标准鱼的逻辑里,我们必须要找到一个鱼鳍,能够删数的前提是,这个鱼鳍必须挨着定义域里的某个候选数x,这样我们才能保证删数时,这个长在外面的鱼鳍,它所在的行列宫可以对应到删除域的某处上。

比如上面左边的这个鱼图里,首先我们肯定必须要保证的是,鱼鳍得长在“/”处的地方,因为这是鱼鳍的规定,鱼鳍必须应该能够影响结构的成立;其次,鱼鳍还得能够对应到删除域上的某处。所以,r5c456就不可能了,如果r5c456某处可以是x的话,这样删除域的任意一个地方都无法对应到,所以导致无法继续推理执行删数逻辑;同理,r8c456也是一个道理。所以这个结构最终能够出现鱼鳍的地方就是右图里标注“F”字母的地方;当然,为了可以对照,图中也标注了“I”字母,来表示这个单元格是可以提供残缺情况的(即标注了“I”的单元格可以没有x候选数,即可以改写为“/”符号)。

同样地,宫内四链列也都可以带有鱼鳍,只是逻辑和上述的逻辑是一样的,所以可以类比,就不作阐述了。

下面我们来看一些有关鱼鳍的宫内鱼的示例。

Part 2 带鱼鳍的宫内鱼的示例

2-1 鳍宫内二链列

接下来我们来看一些关于带有鱼鳍的宫内鱼的示例。

如图所示,我们把r1和b8的所有9圈出来。如果就这样去找删除域的话,就会发现,r1c7(9)和r8c6(9)都是不好找删除域的地方。因为它们相对于r1和b8而言,都是“单独”出现的,也就是说,我们可以明显把c5勾出来,这样其中的三个9都可以被覆盖到,但r1c7(9)和r8c6(9)却被单独列出来,要增加删除域就必须得为它们各自单独增加一个删除域区域才行。不过这样,显然就变为了三个删除域区域,已经超过了两个删除域区域的要求。

所以我们可以采用一种方法,把其中一个9看作鱼鳍,然后另外一个看作鱼的一部分,这样的话,鱼鳍就不用单独作出一个删除域区域,因为它的推理不依赖于鱼本体的结构。我们在推理鱼鳍的时候,都是采用“如果鱼鳍为真,则删除鱼鳍所在的相关单元格的位置的这个数;而鱼鳍为假,则鱼结构成立”,但这种说法里,并未提到鱼鳍为真的时候,鱼到底是如何的,所以我们不必去考虑它跟鱼本体结构的关系,所以也没必要单独分配一个删除域区域;而另外一个数就作为鱼的一部分,分配一个删除域区域即可。所以,如图所示的结构就是这样处理的:把r8c6(9)看作鱼鳍,而r1c7(9)看作鱼的一部分,这样的话,定义域和删除域的区域个数就相同了,而且鱼鳍也可以对应到删除域区域的r8c7(9)上,所以r8c7 <> 9就是这个例子的结论。

实际上,可以看到,这个实际就是一个同数的区块链结构。我们把删除域视作弱关系的区域,定义域看作强关系的区域,鱼鳍看作链头的话,就会发现它就是一个普通的链结构,所以一般来说,这样的结构我们都可以转为链来书写和观察。如果你觉得鳍宫内二链列(Finned Franken X-Wing)不容易看鱼的话,请你尝试使用链的视角来找它们。

2-2 鳍宫内三链列

如图所示,如果我们忽略r1c1(3),那么在r15b7里的所有3将构成一个标准的宫内三链列的结构,删除域则是c235。但是由于r1c1(3)客观存在,我们只能删除掉删除域和r1c1(3)的相关格的交集,即只有r23c23(3)四处的候选数3可以删除(如果这些单元格里含有候选数3的话)。所以,就图上而言,结论是r3c23 <> 3。

如图所示,这一则示例的逻辑也是一样。假设r4c9(6)为假,则c19b5将形成一个宫内三链列。而r4c8(6)的客观存在,导致删数范围缩小到r56c78(6),所以r56c78 <> 6。

如图所示,如果r1c13和r3c3的候选数4全部消失,则结构r137的所有4将构成一个宫内三链列,删除域则完全成立;但鱼鳍有三个,所以这个示例必须要找的是删除域和这三个鱼鳍都能删除掉的地方,即只有r2c2(4)了,所以r2c2 <> 4。

2-3 鳍宫内四链列

如图所示,这个示例极其不好看,因为残缺的现象非常严重,所以例子也比较难理解,所以不要分心,看看下面的逻辑,仔细思考其中的说法。

不过不要紧,因为我们按照理论来分析,如果此时我们不看r1c2(1)的话,定义域和删除域区域数量是一样的,都是4个,而且删除域也确实做到了全覆盖的要求,所以它是一个合格的宫内四链列结构。只是,当鱼鳍被删除后,结构的有一些删除域上就只有一处1可以填了,比如c9。我们说过,结构一经成立的话,删除域的每一个区域里也都会含有一处位置填入候选数x,但如果此时只有一处可以放,那它就应当就是x的填数位置。那么是不是说明r9c9(1)在c9此时只有这一处可以填,就一定说明r9c9 = 1呢?当然不是了,因为这是基于鱼鳍为假时候的推导。所以鱼鳍为真的时候,我们并未作出任何对于鱼结构内部的推导逻辑,而仅仅是用来删数了,所以r9c9此时是不是1,我们并不知道。

那么为什么不把r1c2(1)看作结构的一部分,而非要当它为鱼鳍不可呢?原因是,如果把r1c2(1)看成结构的一部分,这个结构就一定要多一个删除域来覆盖r1c2(1),我们要实现全覆盖的要求就必须保证每一个候选数都尽量覆盖完全。所以这个结构我们只能把它看作鱼鳍,这样,鱼鳍因为它不属于结构的一部分,我们在推理和判断剩余结构是否是宫内鱼的时候就不需要去考虑它了。

那么,这里就可以详细阐述一下Finned(带鱼鳍的鱼)和Sashimi(退化鱼)的用法的区别了。在前文里,Finned和Sashimi是很好区分的,比如在标准鱼里,只要结构必须依靠鱼鳍才能存在,去掉鱼鳍后结构立马被降解的,就是Sashimi形式,即退化鱼;而其它的情况均为Finned。

而宫内鱼里结构就显得很复杂,所以有些时候总会混淆带鱼鳍的普通鱼和退化鱼,到底什么时候该叫什么。这里可以这么想这个问题。只要把鱼鳍去掉后,存在某一个定义域区域里只有一处位置可以放下x的,就叫退化鱼(Sashimi),其它的情况全部都是带鱼鳍的普通鱼结构(Finned),所以上述例子看似好像结构残缺过于严重,就会不由地去怀疑它是否是退化鱼,实际上,它是看的删除域只有一处位置,而并非定义域只有一处,所以它依然用Finned一词。

2-4 鳍宫内五链列

之前说过,宫内鱼是存在五阶的形式的,现在我们就要来看看这里的示例。

如图所示,如果将r6c4(5)和r8c5(5)视为不存在,那么剩下的部分就存在一个定义域为c2358b5,删除域则是r13479的宫内五链列(Franken Squirmbag/Starfish)。但由于鱼鳍的客观存在,所以我们只能删除掉删除域以及这两处5的相关格交集,所以只有r79c4(5)可以删除。

接下来来看一则目前例子里最麻烦的一个示例。这个例子是一个孪生宫内五链列(Siamese Finned Franken Squirmbag)。如果你能明白这一则示例,就说明你对鱼的掌握已经能灵活运用了。

如图所示。我们细数所有r23568的3,如果要定删除域,最少也得有6个才行。因为多出来的r23c23(3)和r6c6(3)必须单独为其增加一个宫内的删除域,才可以实现全覆盖的规则。

不过,显然这样定义域区域和删除域区域就不一样多了。我们就尝试去这么想。如果我们此时把r23c23(3)看作鱼的一部分,而且我们此时把r6c6(3)看作鱼鳍的话,鱼鳍因为它并不作为推导鱼结构内部逻辑的一部分,所以我们不必单独为其分配一个删除域,所以这样的话,定义域和删除域个数恰好此时就相同了,那么删除域的所有位置都可以删除;不过带有鱼鳍,所以删除域内的删数还要进一步看是否和鱼鳍能够对应上。所以最终的删数此时是r4c4(3),这个位置是鱼鳍和删除域都能对应的位置;

不过,我们现在切换视角,把r23c23(3)视作鱼鳍,而r6c6(3)看作鱼的一部分,此时因为换过来看并不会影响总体结构的删除域区域个数,所以删除域依旧是5个,鱼此时依然成立,不过删数就变为了删除域和r23c23(3)能够对应到的位置,所以此时的删数只有r1c1(3)。

可以看到,两则观察视角是同时推理的,并不分先后顺序,所以两个删数是可以同时得到删除的,那么r1c1(3)和r4c4(3)就是这个示例的结论。这个结构和之前我们讲到的孪生鱼非常接近,因为它也是采用切换视角,大部分数值都是作为鱼的一部分看待,而少部分作为鱼鳍进行视角的切换,并对应不同的删数。


第 56 讲:带鱼鳍的宫内鱼的评论 (共 条)

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