吧务
level 7
Sunnie😂
楼主

“/”表示不能填某一个候选数(图中用字母x表示),这样一来,就是一个标准的三链列,定义域用橙色表示,而删除域则用蓝色表示。我们尝试移动其中的一列。

现在三链列仍旧成立,只是由于x位置的移动,删除域发生的一点小变动,但并不影响。我们发现,当“合并”到一起的时候,就存在右边的两格在同一宫内了,此时我们思考,能否将定义域的其中一部分变化到宫内。例如行B,我们去掉在行B的定义域,然后转化到宫3内。这个时候我们发现,x的位置可以在宫3的删除域内的任意位置都可以,而A9、B9、C9这3格是一定不可能存在x的,这是因为,如果这3格里面存在x了的话,这将导致这个鱼的形状会错开,以致不能删数。于是,就变成了这样。

但是删除域是否依然没有变化呢?尚不知道。所以我们采用枚举的情况来假设一下。由于宫3内有6个可能位置都能填x,那么我们一个一个假设,但是由于A7、B7、C7这3格的假设结果一定是等效的,A8、B8、C8这3格的假设结果一定也是等效的,所以最终就只有2种情况,加上宫3不填的可能,一共是3种情况,其推导过程如下所示:
当A7、B7、C7的其中之一填x的时候,此时我们发现,列7都不能填x了,因此,观察下方行E和行H,由于列7不填的关系,现在列E和列H就只有E2、E8、H2、H8这4格可以填x了,这个时候,刚好构成了一个二链列的结构,因此此时的删除域是列2和列8,但是由于A7、B7、C7存在一格填x的缘故,所以列7的其他位置也不能填x;
当A8、B8、C8的其中之一填x的时候,此时我们发现,列8都不能填x了,因此,观察下方行E和行H,由于列7不填的关系,现在列E和列H就只有E2、E7、H2、H7这4格可以填x了,这个时候,刚好构成了一个二链列的结构,因此此时的删除域是列2和列7,但是由于A8、B8、C8存在一格填x的缘故,所以列8的其他位置也不能填x;
但是,当宫3内的那6格一个x都不填的时候,此时我们发现,宫3将没有一个位置能填x了,因此这个情况是错误的。
此时我们发现,这3种情况除最后一种情况是错误的,被排除了之外,剩下2种情况都能导致列2、列7和列8不能填入x,所以说,原本的删除域其实是没有发生变化的。
上图的结构就被称为宫内鱼(Franken Fish)。宫内鱼的定义是:当某个鱼的定义域或删除域都是属于“a个行 + b个列 + c个宫”,且a和b不同时大于0且c > 0的,则就是宫内鱼。
我们很容易看出来,这样就直接不允许行和列不同时存在了,也就是行宫、列宫的组合。
那么它是否存在残缺的情况呢?是的。我们尝试从宫3开始下手。由于是分两种情况假设,因此至少列7和列8内都得有1个x,因此至少得有2个。但是能不能同行呢?可以,但是就恢复了原来的三链列了,因此此处取不同行的2格填x,因此变成下方的残缺结构:

这样就是一个残缺宫内三链列了。但仅仅只是缺少宫内的情况,其实行E和行H内也可以缺少部分位置的x。我们说,链列残缺的充要条件是定义域和删除域的所有部分中都至少含有2个x,也就是说,图上的定义域(行E、行H、宫3)和删除域(列2、列8和列9)内的每个部分都需要出现至少2个x。那么现在请自行推理并寻找一下能够缺少的位置。
我们尝试思考一个问题,存在宫内二链列吗?答案是肯定的,但是由于它完全等效于一个技巧,所以我们用另外一个技巧找起来非常方便而忽视掉了它,我们来看看。



如图就是二链列转变到宫内二链列的图。而下面的这个图就是宫内二链列的残缺情况。
这就是一个宫内二链列的简图,不过我们发现,这个图里面,特别是行H的部分,会构成一个区块摒除法,直接可以删除一部分的数字,而且这种结构很容易被找到。所以我们说,宫内二链列完全等价于(级联)区块摒除法,此处可以看成全部都是只能删数的普通区块摒除法而构成的级联区块摒除法。另外,宫内四链列的简图如下,由于结构复杂,所以不给出推导步骤。

这样就构成了宫内四链列。但是要注意的是,四链列不止可以变成这样,其实左边还可以变形到宫内。例如下面就是其中的一个情况。
由于宫内二链列会被代替,因而此处不介绍此技巧的使用,只介绍宫内三链列以及宫内四链列及它们的变形。



