新游戏

数独中的剑鱼技巧

剑鱼(Swordfish)是X-Wing的进一步扩展,也是一种经典的鱼形技巧。它追踪同一个候选数在3个基准单位与3个覆盖单位中的分布,并利用锁定关系排除其他位置的该候选数。

数独剑鱼技巧Banner:候选数在3行和3列中形成鱼形结构

什么是剑鱼?

以行型剑鱼为例:选择3行,如果目标候选数在每一行都只出现在相同的3列范围内,并且3列都被这些候选位置覆盖,那么这3行与3列构成剑鱼。

每一条基准行不一定都要出现3次候选数,出现2次也可以。关键是3行中的所有目标候选位置合起来只占用3列。

确认后,可以从这3个覆盖列的其他行中删除目标候选数。列型剑鱼完全对称:交换行和列即可。

示例:候选数5的行型剑鱼

观察候选数5在以下3行中的位置:

  • 第2行:R2C2、R2C6;
  • 第5行:R5C2、R5C9;
  • 第8行:R8C6、R8C9。

这6个候选位置全部位于第2列、第6列和第9列,因此形成行型剑鱼。3个数字5最终必须分别落在这3行与3列的交点中。

候选数5在第2行、第5行、第8行与第2列、第6列、第9列形成剑鱼

图片说明:黄色格是剑鱼的候选位置;红色叉号表示第2列、第6列和第9列其他行中可以删除的候选数5。

如何寻找剑鱼?

  1. 选择一个候选数字。
  2. 找出该候选数只出现2次或3次的行。
  3. 尝试选择3行,检查所有位置是否合起来只占用3列。
  4. 确认3个覆盖列都至少包含一个目标候选位置。
  5. 从这3列的其他行中删除目标候选数。

如果按行没有发现,可以逐列进行同样的检查。实际解题时,先掌握X-Wing会更容易理解剑鱼的基准单位和覆盖单位。

为什么剑鱼成立?

3个基准行都必须各放入一个目标数字,而它们的所有候选位置都被限制在3个覆盖列中。因此,这3列中的目标数字必然由这些交点占用,覆盖列的其他格子不可能再填入该数字。

基准单位与覆盖单位

理解剑鱼时,最重要的是区分两类单位。主动选择并进行比较的3行称为基准单位;承载这些候选位置的3列称为覆盖单位。若从列开始寻找,则3列是基准单位,3行是覆盖单位。

基准单位中的候选分布不必对称,也不必形成整齐的9个交点。示例中的每行只有2个候选位置,仍然有效,因为6个位置共同覆盖了3列,而且每个覆盖列都参与了模式。判断时应关注候选位置的并集,而不是图形是否美观。

行型剑鱼与列型剑鱼

行型剑鱼从3行出发,在3列中锁定候选数,排除发生在覆盖列内;列型剑鱼从3列出发,在3行中锁定候选数,排除发生在覆盖行内。两者逻辑完全相同,只是观察方向相反。

如果某个数字在多行中候选位置很少,可优先寻找行型;如果它在多列中更集中,则改为寻找列型。切换观察方向往往比继续盯着同一组候选位置更有效。

常见误区

误区一:每一行都必须正好有3个候选位置

不需要。每条基准行可以有2个或3个目标候选位置,只要3行的候选位置并集正好位于3列内。

误区二:从剑鱼交点中删除候选数

不能删除构成剑鱼的目标候选数。应删除的是3个覆盖列中、基准行以外的同一候选数。

误区三:3行中的候选位置占用4列也算剑鱼

标准剑鱼要求3个基准单位只对应3个覆盖单位。如果涉及4列,锁定关系不足,不能按剑鱼排除。

总结

同一候选数在3行中的所有位置如果只落在3列内,就可能形成行型剑鱼,并可从这3列的其他行中删除该候选数;列型剑鱼则交换行列方向。

需要检查复杂候选数时,也可以使用在线数独求解器验证当前棋盘。

常见问题

什么是数独中的剑鱼?

当同一候选数在3行中只分布于相同的3列内时,就可能形成行型剑鱼;交换行列可得到列型剑鱼。

剑鱼和X-Wing有什么区别?

X-Wing使用2个基准单位和2个覆盖单位,剑鱼把相同的鱼形逻辑扩展到3个基准单位和3个覆盖单位。

确认剑鱼后可以删除哪些候选数?

行型剑鱼从3个覆盖列的其他格子中删除目标候选数;列型剑鱼则从3个覆盖行的其他格子中删除。

返回列表