有技巧名的强制链
Named Forcing Chains
归并强制链(Merged Forcing Chains)
可以看到,前面在假设过程之中,我们用到的思路都是在假设某一个节点为真或假时候引发矛盾。下面我们来看强制链在合并后产生的删数效果。

如图所示。这个链的表示如下:
7r23c2:
9r23c2-9r1c1
(7-9)r9c2=9r9c7-9r1c7
7r3c5:
(7-9)r1c5
之前我们介绍的强制链都是从一个节点出发的。这次我们从多个不同节点出发看看能不能推理。比如这个题,我们可以看到, 终点三个分支都指向同一个区域的三个同一个数字的摆放位置,这一点保留了下来;但是起点完全不一样。之前的起点还保留了同一个节点作为初始假设,这次倒好,直接都不一样了。
这是否能推理呢?答案是可以的。这里干脆我们把删数也作为节点纳入到链里,但是分开看。比如这个题,我们先看 r3c1(7)
这个候选数。
假设把他视为一个普通节点来看的话,那么它的下一个节点可以是 r23c2(7)
或者 r3c5(7)
。因为之后的推理是强链关系出去的,所以我们这里添加的应该是一条弱链关系。换言之,我们应假设 r3c1(7)
纳入时的状态是假设它为真。那么,纳入后,可以看到这个链就退化为了一个很普通的区域强制链,并得到最终 r1
所有填 9 的位置全部为假,引发了矛盾。所以,这个假设不成立。
对于 r3c3(7)
而言,好像天助我也一般,它也可以纳入到强制链之中,并接入刚才完全相同的这两个节点,并仍然可以得到同样的矛盾。所以,这样一口气强制链就可以删两个数。
明白了吧。这种强制链仍然是普通的区域强制链或者单元格强制链,只不过我们把开始的节点稍微延后了一步:因为强制链的删数一般只有一个,所以我们延后了节点后,每个分支对应的起点发生了变化。那么他们就可以用类似普通链里“头尾删交集”的效果找出除了延后之前的那个节点以外,还可以纳入的节点都有哪些。然后一并删除。我们把这个过程称为归并强制链(Merged Forcing Chains),即把分支延后后归并得到多个删数的强制链逻辑。它提供了一个找多个删数的强制链的视角。
我们再来看一个例子。

如图所示,这条链的表示如下:
7r9c5:
(7-4)r7c4=(4-6)r1c4
(7-6)r7c4
6r9c1:
6r5c1-6r5c4
6r5c1-6r5c456=9r5c45-9r5c7=9r1c7-(9=2)r2c8-2r3c8=(2-6)r3c4
这个题有四个分支,并归并为两个部分。
鳍链(Finned Chain)
基本推理
试想一下,如果强制链的分支里有一个分支起步就是夭折的,这种链会有删数吗?

如图所示。假设我们先忽略掉 r1c5(4)
,我们就可以看到一个完整的链(准确来说,叫区块不连续环):
4r4c6=6r3c6-(6=1)r1c5-1r3c46=1r3c9-1r2c7=(1-3)r6c7=3r6c5
然后就有了这样的删数。但是,看起来似乎多出来的 r1c5(4)
也并不会影响链的删数,因为这个多出来的数填到格子里,也可以删掉 r6c5(4)
。所以,按鱼鳍的思路看这个数的话,它具有如下的两个情况:
如果
r1c5(4)
为假,则链成立,删数是r6c5(4)
;如果
r1c5(4)
为真,则删除行列宫其余位置的 4,也包含r6c5(4)
。
所以,这个题的结论是 r6c5 <> 4
。
可以看到,这是一个普通的链,外加了一个“鱼鳍”。我们把这种链称为鳍链(Finned Chain)。
我们再来看一个例子。

如图所示。这个例子也自己看吧。这个例子用了两个鱼鳍,假设方式是一样的,先假设鱼鳍都不存在,然后引出链;然后假设鱼鳍存在,于是按鱼鳍存在的位置删,最终交集删数。
这也叫强制链?
你可能会问,这是强制链吗?是的,虽然看起来像是鱼鳍和普通链的结合,但如果你把鱼鳍视为一个独立的分支,并把其中任意一个强链关系拆解为一组可以用于删数的分支的话,那它就会变为强制链的视角。比如这个题,对于 b9
而言,一共有 4 处可以填 5 的位置。那么按照强制链的视角,讨论 5 的全部填数位置,其中两个分支(鱼鳍)将因为假设为真导致直接构成删数;剩下两个分支,就是图中连接为强链关系的 r7c8(5)
和 r8c7(5)
了。把它俩拆开,然后形成两个分支最终仍然可以到达 r1c9(5)
的地方。因此,它其实是可以转为强制链的视角的(尽管这非常没有必要)。
那么至此我们就把强制链的内容介绍完了。
最后更新于