数独中的剑鱼技巧
什么是剑鱼?
剑鱼是一种鱼形技巧,将 X-Wing 的两行或两列结构扩展到三个基础单位。针对某个候选数,三行中的每一行最多只能有三个候选位置,并且这些位置都必须落在相同的三列中。按列观察时,只需交换行和列的角色。
这三行称为基础行,三列称为覆盖列。在三条基础行中,该候选数必然以某种顺序占据这三条覆盖列,因此可以从覆盖列中、基础行以外的其他格子删除该候选数。
如何按行寻找剑鱼
- 选择一个候选数。
- 找出三行,在每行中该候选数有两个或三个候选位置。
- 检查这些候选位置是否全部包含在相同的三列中。
- 从这三列中基础行以外的其他格子删除该候选数。
每一行可以只使用三列中的两列。关键是所有候选位置合起来必须正好落在三列覆盖范围内,不要删除三条基础行自身九个位置中的候选数。
为什么可以排除候选数?
假设候选数7只分布在三行中,合起来只出现在第2、5、8列。三行必须分别在这三列中的某一列放置7,而每列只能有一个7。因此,三个7作为整体必然占据这三列,虽然具体顺序尚未确定。
所以第2、5、8列中其他行的格子都不能再包含7,因为这三列必须从三条基础行中得到各自的7。
剑鱼与 X-Wing
X-Wing 使用两条基础行和两条覆盖列;剑鱼使用三条基础行和三条覆盖列,并允许每条基础行有两个或三个候选位置。剑鱼不要求四个角组成完整矩形,因此通常更难发现。
剑鱼常见误区
- 一个剑鱼只能围绕同一个候选数展开。
- 候选位置必须包含在三条覆盖单位中,不能只是大致接近。
- 基础行中存在其他候选数并不会自动破坏剑鱼,只需关注选定数字。
- 只能从基础行以外的覆盖单位中排除候选数。
剑鱼适用于所有数独吗?
适用。剑鱼是一种通用的数独逻辑结构,不依赖某个固定数字。通常在完成单数、数组和交叉排除后更容易发现。由于它需要准确的候选数标记,完整填写 Notes 会更便于核对。