X-Wing 数独 - 高级候选排除技巧详解

·约 2 分钟阅读

X-Wing 是指当 2 行(或列)中某个数字的候选位置恰好在相同的 2 列(或行)时,可以从这 2 列(行)的其他格子中排除该数字的高级技巧。本文讲解攻克 Master 难度所需的逻辑。

X-Wing 的逻辑结构

X-Wing 在以下条件下成立。对于某个数字(例如 4),在行 A 和行 B 中,4 的候选位置都仅存在于列 X 和列 Y 两处。此时,4 在行 A 中要么在列 X 要么在列 Y,在行 B 中也是如此。进一步,由于列的约束,如果行 A 中 4 在列 X,则行 B 中 4 必在列 Y;如果行 A 中 4 在列 Y,则行 B 中 4 必在列 X。无论哪种情况,列 X 和列 Y 中都已确定会放置 4,因此可以从列 X 和列 Y 的其他格子(行 A、B 以外)中排除 4。

名称由来与直观理解

X-Wing 的名称源于将 4 个候选格子用对角线连接后呈 X 字形。行 A-列 X、行 A-列 Y、行 B-列 X、行 B-列 Y 这 4 个格子形成矩形,其对角线画出 X 形。这 4 个格子中,对角线上的 2 个格子会填入数字(具体是哪条对角线尚未确定)。能够直观识别这种模式后,发现速度会大幅提升。

发现步骤

系统地寻找 X-Wing:(1) 对于某个数字,列出所有候选位置恰好为 2 处的行。(2) 在其中寻找候选列位置相同的行对。(3) 找到配对即 X-Wing 成立,从对应列的其他格子中排除候选数。以列为基准的 X-Wing 也同样可以寻找(只需交换行和列)。前提是候选数管理准确,笔记更新遗漏会导致错过 X-Wing。

向 Swordfish 的扩展

X-Wing 是 2 行 × 2 列的模式,将其扩展为 3 行 × 3 列就是 Swordfish。当 3 行中某个数字的候选位置合计在 3 列以内时,可以从这 3 列的其他格子中排除候选数。进一步扩展为 4 行 × 4 列的是 Jellyfish。这些都是 X-Wing 的推广,逻辑依据相同,但模式复杂度增加使得发现难度大幅上升。

带鳍 X-Wing (Finned X-Wing)

纯粹的 X-Wing 要求两行的候选数恰好各自落在两列上,但在实战中常常混入一个多余的候选数 (鳍),破坏这种干净的条件。此时该形态称为带鳍 X-Wing。你无法进行完整的删减,但仍可安全地从与鳍同处一个宫的格子中删去目标候选数。许多人一看到鳍出现就放弃 X-Wing,然而只要关注鳍的位置,便能实现部分删减。这一思路同样适用于 Swordfish 与 Jellyfish,而在真实盘面中,带鳍形态比纯粹形态出现得更频繁。

常见错误与验证方法

X-Wing 的常见错误是把恰有两个候选的行与有三个以上候选的行混为一谈。X-Wing 只在这样一对行之间成立:目标数字的候选恰好存在于两列之中。若候选出现在三列或更多,那就不是 X-Wing,而属于 Swordfish 等其他技巧的范畴。在执行任何删减之前,务必确认「这两行是否真的共享同样的两列」以及「我要删除的格子是否在 A 行、B 行之外」。一旦漏更新笔记,就可能误判一个并不成立的形态,从而把盘面做坏。

易于出现 X-Wing 的盘面特征

应当在中盘以后寻找 X-Wing,也就是在用尽显性唯一数、隐性唯一数、数对与三数组都无法再找到可确定格之后。尤其当某个数字的候选在整个盘面上集中于少数几行或几列时,就是 X-Wing 的有力线索。针对每个数字,有意识地数一数「恰好只有两个候选格的行与列」,能加快发现速度。盘面越往后推进、剩余候选越少,X-Wing 越容易出现,因此与其在开局就急着寻找,不如在感到卡壳后系统地扫查,更有效率。

X-Wing 在高级技巧中的定位

X-Wing 处于「鱼 (Fish)」类技巧的入口,这类技巧着眼于单一数字,并从格子之间的关系中删去候选。Swordfish 与 Jellyfish 是把 X-Wing 的行列数加以推广的产物,其逻辑骨架完全相同。另一方面,XY-WingW-Wing 属于跨越多个数字进行式推理的另一系,利用的是只有两个候选的格子之间的连接。它们难度更高,但都基于确定的逻辑,绝非猜测。牢固掌握 X-Wing,能为你迈向更复杂的鱼类与链类技巧提供立足点。反过来说,若连 X-Wing 都看不出就去碰更高级的技巧,由于缺乏根基,往往难以掌握。按部就班地逐级搭建逻辑,看似绕远,实则是最稳妥的进步之道。