Sudoku Clean 素数独 logo

Sudoku Clean 素数独

技巧文档 / ALS-XZ

极难技巧

ALS-XZ

建议先熟悉:标注候选数 · 数对和数组

ALS-XZ 的名字看起来很抽象,但它的核心只有一句话:

两个“只差一步就会锁定”的候选数组,通过一个受限制的公共候选 X 相连,从而保证另一个公共候选 Z 至少会在其中一组出现。

要真正理解这句话,我们需要依次弄清楚 ALS、RCC、X 和 Z 分别是什么。


1. 什么是 ALS?

ALS 是 Almost Locked Set 的缩写,中文常称为“近锁定集”。

一组候选格满足下面两个条件时,就是一个 ALS:

  1. 这组格子都在同一个行、列或宫内,因此彼此可见;
  2. 如果共有 N 个格子,它们的候选数合起来恰好只有 N+1 种数字

例如,两格中的候选分别是 1、22、3。这里有 2 个格子,候选并集是 1、2、3,共 3 种数字,所以它们构成一个 ALS。

ALS 从近锁定集变为锁定集

为什么叫“近锁定集”?

普通锁定集是 N 个格子只有 N 种候选数字。这些格子必须由这 N 个数字填满,因此每个数字都必须在其中出现一次。

ALS 比锁定集多出一种候选:N 个格子有 N+1 种数字。只要从整组中排除任意一种数字,它就会变成 N 格 N 数的锁定集。

以上面的 1、2、3 为例:

  • 如果整组不填 1,剩下 2、3 填两格;
  • 如果整组不填 2,剩下 1、3 填两格;
  • 如果整组不填 3,剩下 1、2 填两格。

无论排除哪一种,剩下的每个数字都必须出现。这正是 ALS-XZ 推理的基础。

可以把 ALS 记成:N 个互相可见的格子里有 N+1 种候选;少掉任意一种,就会变成锁定集。


2. 什么是 RCC?

现在取两个互不重叠的 ALS,称为 ALS AALS B

如果一个候选数字同时存在于 A、B 中,它就是两组的公共候选。但公共候选不一定是 RCC。

RCC 是 Restricted Common Candidate 的缩写,意思是“受限公共候选”。公共候选 X 还必须满足:

A 中每一个 X 的位置,都能看见 B 中每一个 X 的位置。

最常见的情况是:A、B 中所有 X 都落在同一行、同一列或同一宫。因为同一个区域不能重复出现 X,所以 X 不可能同时在 A、B 中成立。

两组 ALS 通过 RCC X 相连

因此,RCC X 有一个非常重要、也很容易被误读的结论:

  • X 最多只会在一组 ALS 中出现
  • 所以至少有一组 ALS 最终不会填 X;
  • 但 X 也可能两组都不填,因此单 RCC 并不能保证 X 自己一定出现。

没有填 X 的那组 ALS 会少掉一种候选,随即变成锁定集;组内剩下的数字全部都必须出现。

判断 RCC 时,不能只检查一对 X。必须确认 A 中的每一个 X都能看见 B 中的每一个 X


3. ALS-XZ 是怎样形成的?

一个标准的单 RCC ALS-XZ 包含:

  1. 两个互不重叠的近锁定集 ALS A 和 ALS B;
  2. 两组至少有两个公共候选,记作 X 和 Z;
  3. X 是 RCC:X 不可能同时在 A、B 中成立;
  4. Z 是另一个公共候选;
  5. 某个外部候选 Z 能看见 Z 在 A、B 中的全部可能位置。

在游戏的提示图中:

  • 蓝色格子表示 ALS A;
  • 黄色格子表示 ALS B;
  • 蓝色候选数表示 RCC X;
  • 绿色候选数表示被证明至少会出现的 Z;
  • 红色候选数表示可以删除的候选。

ALS-XZ 中 Z 的保证位置与删数


4. 为什么一定能删除 Z?

关键不是猜 X 在哪一组,而是把所有可能都考虑进去。

情况一:X 在 ALS A 中成立

由于 X 是 RCC,ALS B 不能再填 X。B 去掉 X 后变成锁定集,因此 B 中剩下的数字都必须出现,其中包括公共候选 Z。

所以这种情况下,Z 必须在 B 中出现

情况二:X 在 ALS B 中成立

同理,ALS A 不能填 X。A 变成锁定集,因此 Z 必须在 A 中出现

情况三:A、B 都不填 X

这时 A、B 都会变成锁定集,Z 会在两组中分别出现。结论只会更强。

把三种情况合起来,无论 X 最终在哪里:

公共候选 Z 至少会在 ALS A 或 ALS B 中出现一次。

如果一个外部格中的候选 Z,能同时看见 Z 在 A、B 中的所有可能位置,那么 Z 无论落在哪一组,都会与这个外部候选冲突。因此可以从该格删除 Z。

这也解释了为什么删数格必须看见两组中的全部 Z:只看见 A 中的 Z 或 B 中的 Z 都不够,因为我们事先不知道哪一组会成为锁定集。


5. 双 RCC ALS-XZ

有时 ALS A 与 ALS B 有两个公共候选 X、Y,而且 X、Y 都是 RCC。这称为双 RCC,或 Doubly Linked ALS-XZ

先看每个 RCC 自己:

  • X 不能同时在 A、B 中成立,所以至少有一组不填 X;
  • Y 也不能同时在 A、B 中成立,所以至少有一组不填 Y。

如果同一组同时不填 X 和 Y,它会从 N+1 种候选一下少掉两种,只剩 N−1 种数字去填 N 个格子,这是不可能的。

因此两个“缺席”不能落在同一组:

  • A 必须排除其中一个 RCC;
  • B 必须排除另一个 RCC;
  • A、B 都恰好少掉一种候选,所以两组都会变成锁定集。

下图画出其中一种可能:A 不填 X、B 不填 Y,于是 Y 必须在 A 中出现,X 必须在 B 中出现。实际盘面也可能完全反过来,但结论相同。

双 RCC 必须分居两组

于是我们得到比单 RCC 更强的结论:

  1. X、Y 必须各在 A、B 的其中一组出现,而且一边一个;
  2. A 中其它非 RCC 候选都被锁定在 A;
  3. B 中其它非 RCC 候选都被锁定在 B。

这就是提示图中两种保证标记的含义:

  • 蓝色标记的 RCC 数字,必在 A、B 的某个蓝色位置出现;
  • 绿色标记的其它数字,必在所属 ALS 的绿色位置出现。

红色候选只要能看见同数字的全部保证位置,就可以删除。


6. 常见误区

公共候选就是 RCC?

不是。RCC 不仅要同时出现在 A、B 中,还要求 A 侧的每个位置都能看见 B 侧的每个位置。

看见一部分 Z 就可以删除?

不可以。删数候选必须看见 Z 在 A、B 中的全部可能位置

单 RCC 可以删除 X 吗?

通常不可以。单 RCC 只证明 X 不能同时在两组出现,并没有证明 X 至少出现一次。ALS-XZ 删除的是另一个被保证出现的公共候选 Z。

两组 ALS 可以共用格子吗?

不可以。这里讨论的 ALS-XZ 要求 A、B 互不重叠,否则“哪一组排除哪个候选”的证明不再成立。

只要 N 格 N+1 数就是 ALS?

还要保证这 N 个格子彼此可见,通常就是位于同一个行、列或宫中。


7. 实战检查顺序

遇到 ALS-XZ 提示时,可以按下面的顺序阅读:

  1. 先看格子:蓝色 ALS A、黄色 ALS B 是否各自满足 N 格 N+1 数;
  2. 再看蓝色候选 X:A 中每个 X 是否都能看见 B 中每个 X;
  3. 找公共候选 Z:Z 是否同时存在于 A、B;
  4. 看绿色位置:这些是不是 Z 在两组中的全部可能位置;
  5. 最后看红色候选:红色格是否能看见同数字的全部绿色位置。

如果这五步都成立,删数就不是猜测,而是由两个 ALS 的锁定关系共同保证的。