grid_on

Sudoku Clean 素数独

技巧文档 / XY链

XY链

前置知识: 链的基础

高阶

XY链

前置知识:链的基础


1. 描述

XY链(也常写作 XY-Chain)是一种“只用双值格”的链技巧。

它和 X链 不同点在于:

  • X链:只盯一个数字 d,链上的节点都是 “d 的候选”
  • XY链:只盯“双值格”,链会在不同数字之间来回切换

直觉上你可以把它理解成一句话:

双值格里两数必有其一,再配合“同行/同列/同宫同数互斥”,就能把推理一路传下去。

当链的两端碰巧是同一个数字(例如都是候选 2),那么任何一个能同时看见两端的候选 2,都可以被删除。


2. 详解

XY链 详解示例

先看上图:蓝色格子是链的两端,目标数字是 2

  • 起点:r1c7 中的候选 2
  • 终点:r8c6 中的候选 2
  • 删数点:r8c7 中的候选 2(红色)

为什么 r8c7 的 2 能删?我们用一个很短的反证就够了:

  1. 假设红色候选 r8c7 = 2 为真
  2. 因为 r8c7 能同时看见两端点:
    • 同一列冲突 ⇒ r1c7 不能是 2
    • 同一行冲突 ⇒ r8c6 不能是 2
  3. 但注意:这条链把 r1c7 的 2r8c6 的 2 连接起来了
    在“只由双值格组成”的链里,一端为假会把真假一路传导,最终迫使另一端为真
    ⇒ 所以 r1c7 不是 2 会推出 r8c6 必须是 2
  4. 这就和第 2 步的结论“r8c6 不能是 2”直接冲突(矛盾)

所以假设不成立:r8c7 不可能是 2,候选数字 2 可以删除。


3. 例子

下面两张图是其它 XY链 的例子。你可以先不急着逐段推理,先学会抓住三个关键点:

  • 蓝色端点(链的两端)
  • 一条由双值格串起来的路径
  • 红色删数点(通常能同时看见两端点)

XY链 示例 A

XY链 示例 B


4. 如何寻找 XY链?

一句话:先找一串能首尾相接的双值格,再看链的两端是否落在同一个数字 d 上;若有某个候选 d 能同时看见两端,就可以删掉它。

在游戏里你可以按这个顺序找:

  1. 先从一个双值格开始(只有 2 个候选)
  2. 用“同数互斥”(同一行/列/宫)把链接到下一个双值格
  3. 在每个双值格里,用“二选一必有其一”(格内强关系)把推理继续传下去
  4. 如果最后能回到同一个数字 d,并出现一个候选 d 同时看见链两端,那它就是常见的删数点