第 39 讲:环
环在链里的应用非常广泛,由于它的结构的特殊性,强弱关系能够首尾拼接形成环结构,甚至完全找不到开头。但正是因为这个特征,导致环的删数非常多,因而受到众多难题玩家的青睐。
Part 1 标准环
在学习技巧之前,我们先来看看环的基本形态。

如图所示。链的写法如下:
发现了两点神奇的现象:r1c4(4)首尾成环了,而且强弱关系是交替的,也就意味着,就图上的情况而言,随便找个蓝色节点都有可能成为开头。于是我们随便选了个节点,比如r1c4(4)作为了开头,然后写成了环形。
还有一点是删数,所有红色的都是删数,但这一次,红色的删数比起之前用过的链技巧而言,删数多太多了。那么如何推导呢?反正都是个环结构,随便找个弱关系,把它拆掉。比如我们拆掉最下方的r7c4-r7c9(8)的弱关系。然后链变成这样:

这样就会发现,它就是一个AIC了。那么删数就是两个8共同对应的区域(r7)的其余8了。那我再留下这个弱关系,去断开剩下的随便一个弱关系,也可以得到对应的删数。所以所有删数如最开始的盘面所示。
这种结构特殊之处就在于,链的首尾是完全拼接在一起的,而且链头还不好去找到唯一的那一个位置,这就区别于之前讲到的不连续环了。不连续环虽然名叫不连续环,是有环这个字的,但是我们依然知道它是一种链结构,并且有头有尾,这一点就和现在讲到的这个东西不同了。
那么,这样的特别结构,叫做标准环(或连续环,简称环,Continuous Nice Loop)。
最后需要引起注意的是,弱关系也包括单元格内的弱关系,比如图中的r1c8(2-4)时候,可以删掉r1c8(7),至于原因,把链从r1c8(2-4)这里拆开,得到了一条链头为r1c8(4),链尾为r1c8(2)的AIC,它们的交集,因为是异数的,而且同一单元格,所以交集只能是r1c8内的其余候选数。所以这一点千万别忘记了。
所以说,环有哪些性质可以直接使用呢?
Part 2 环的基本形式和特征
标准环具有如下的特征(请最好背下它们):
任意弱关系都能直接拆掉,并得到一条链,从而获得当前的删数效果;
任意节点都可以作为整条链的链头;
环内的填数情况一共只有两种;
环的长度一定为偶数;
环里面的所有的相邻节点既可以看作强关系,也可以看作弱关系。
那么,这五点我将一一论证。
第一点,这是环的删数原则和基本思想。所以这一点我就不用说明了(就是拆成链结构,然后找删数)。
第二点,例如下面两个举例的节点:r1c4(4)作为开头和r7c9(8)作为开头。


可以从例子里看到,实际上,除了换了链的方向以外,链没有发生任何变动。由于链必须以强关系开头的关系,使得有些以弱关系起头的节点不得不反向绘制链。不过反向绘制并不会影响到什么,因为强弱关系是可以反向的,而且反向后,弱关系开头就变为了强关系开头了,这是因为以弱关系开头的节点和它后一个节点连接;而在反向后,就会和它前面一个节点连接,而它前一个节点和它本身是形成强关系的。
第三点,我们在推理的过程都是最简单的“不填 -> 填 -> 不填 -> 填 –> ……”,这样的周而复始的循环。而环结构之中,由于推理最终回回到最初的位置,并且仍旧能够按照原来假设所定的填数状态继续重新推理,所以这一定是其中的一种情况,而根据性质2,我们知道,任何节点都能做起始点,也就是说,我们不妨将节点切换到与其相邻(它的上一个候选数填数状态或者其下一个候选数填数状态)的位置上去,让它作为链头,这个时候填数状态就能全部交换了。但是,由于结构内就两种填数情况,所以这就说明了,环结构内一定只涉及两种填数。
第四点,强弱关系数量一样,强关系有n个,弱关系就有n个,那长度自然是2n个,2n是一个偶数。
第五点,根据性质3,我们可以直到环内仅存在两种填数情况,而两种填数情况显然只可能使得任意相邻的两个节点一真一假,而一真一假的情况是既满足强关系的定义(不同假),也满足弱关系的定义的(不同真)。有些时候,第五点也被说成“所有强关系都能转为弱关系理解;而所有弱关系都能转为强关系理解”,因为一真一假的逻辑恰好是同时满足强关系和弱关系的定义的。
不过之前说的不连续环并不满足这些特性,只是一种结构成环而逻辑无环的特别情况罢了。实际上,不连续环里的“环”字的意义和我们此处介绍的环的意义不同。所以,不连续环和连续环实际上就差在了“不”这个字上:不连续环是无法连续推导的,因为它始终是符合链的规则,有头有尾,找交集删数;而连续环,任意节点为头都可以。
Part 3 常见技巧的环视角
下面来介绍一些常见技巧的环视角。
3-1 标准链列


如左图所示,这是一个X-Wing(二链列)技巧,它的定义域是c34。我们可以尝试把定义域上的两个单元格视为共轭对,并构成强关系,然后把删除域上同列的两个候选数作为弱关系连起来,最终构成右图的环,这种环的删数和原结构的删数完全一样。而理解方式,只需要变化一点,因为X-Wing结构的形式导致了共轭对一定会出现两处,便可立马绘制出环结构。
实际上,只要我们能在鱼的所有定义域都构成共轭对的形式,那么结构就一定是一个环,比如下面的这个三链列的例子,它的所有定义域区域都会产生共轭对。


如图所示,这就是一个三链列,它的环的画法。
3-2 显隐性数组
数组之所以也能删除很多数字,是因为它实际上也是一个环。


如图所示,这是1、4显性数对的环视角。可以发现,由于显性数对是双值格的关系,单元格之间的候选数的关系变为弱关系,而单元格内的候选数关系即为强关系。
同样地,三数组也是如此。只要三数组的三个单元格都是双值格,那么就一定可以画成环,如图所示。


除了显性数组外,还有隐性数组结构也可以这么干,不过在之前我们说到,隐性数对实际上是两个数形成了共轭对,只是恰好位于同样两个单元格里,所以我们此处就会使用到这一个结论。


我们将其中的共轭对视为强关系,而单元格内作为弱关系,就形成了环,并得到删数。
所以我们可以看到,实际上可以删不同位置的数值的情况,一般都是使用环来解决的,只是我们平时很少,甚至不会使用环来作图。
3-3 欠一数对
还记得欠一数对吗?欠一数对我们通过了例子来解释,而且还通过了直观层面,假设为x和y的方式来得到数对形式。不过实际上,正是因为它能通过x和y的方式来假设,才有了它的环的视角。


如图所示,右图就是左图的环的画法。可以看到,这个例子带了一个区块,而这个区块还是很简单的结构,所以不用过多考虑删数的问题。注意r7c3单元格内的弱关系,也是要删数的。
3-4 双RCC的ALS-XZ
实际上,这个古怪的玩意儿就是一个环。不过这个环的逻辑在之前已经超纲地提到了(因为它还带有两个ALS区域,还要考虑ALS区域的删数,所以在前面提到算是“超纲”了),所以我们就不用过多去啰嗦它的基本逻辑。下面的一些复杂的环结构,它们的删数将涉及到这些内容,所以具体的原理我们在下方会提到。