这篇笔记源于小向动态链中关于动态环部分的讲解:动态环的删数分析。动态环由于存在分支条件,因此并不是所有的弱链都可以进行删数的。所以动态环分为全环和半环,分别对应全部弱链/部分弱链能进行删数。具体怎么判断一个动态环是全环还是半环,可以通过删数分析得到。当然这篇笔记的主角并不是删数分析,也不是讲是全环的绽放,而是既有可能是全环也有可能是半环的 XYZ 环。

首先是 XYZ 半环,如图所示 XYZ 半环只有 XYZ-Wing 的两个分支(不是动态链分支,而是 XYZ -Wing 讨论拐点不同可能性的那俩分支)能删数,删数分别是 XY 两个数(XYZ-Wing 中除了 Z 之外的那俩)。XYZ 半环的特征是在 XYZ-Wing 的结构上,多了一个强链关系连接到 XYZ-Wing 两端分支的 Z (XYZ-Wing 结构中交集删除的那个数)上。

下图中,Z 为 5,X 和 Y 为 1 和 7

XYZ 半环的特征和删数

然后,这部分才是笔记的重点。既然 XYZ 半环是动态环,那怎么看出来它是动态环?看链时,Z(即 XYZ-Wing 中交集删的那个数)不是做为动态环假设分支的起点,而是假设后一个分支。即讨论起点是 X/Y,分叉是 Y/X 和 Z。它的环主体是在同一行或同一列上(只涉及两个单元格),且有两种看环的视角。

下图中,Z 为 5,X 和 Y 为 1 和 7

左图视角,动态分支在 r3c6 分开,在 r9c6 合并; 右图视角,动态分支在 r3c6 分开,在 r3c2 合并。

形状确实很怪异,而小向的教程中没画出链结构硬控了我好一段时间。有意思的是这个 XYZ 半环有两种看环的视角,每个视角下,环主体刚好在 XYZ-Wing 两个分支的其中一个上,所以不考虑删数分析只看主体上的弱链删数的话,这两个视角刚好各对一个 XYZ-Wing 分支进行了删数。删数的结果也恰好说明了,即使是半环,也不一定只有环主体上的(非动态部分)弱链才能删数。

接下来 XYZ 全环就好说了,如图所示 XYZ 全环下所有弱链都能进行删数。特征很明显,XYZ-Wing 加上一个强链关系,且强链关系除了像半环一样,连接到 XYZ-Wing 分支两端的 Z (XYZ-Wing 结构中交集删除的那个数)中。同时,强链关系还连接了 XYZ-Wing 的拐点和分支端点上的 Z。这里给出 XYZ 全环的样子,它虽然是动态环,但弱链确实都可以删数。关于全环的讲解,小向的教程已经说得很清楚了,我就不多赘述了。

下图中,Z 为 2,X 和 Y 为 5 和 7

以上便是个人的一点小小心得,如有错漏请多指教!