grid_on

Sudoku Clean 素数独

技巧文档 / 西尾强制链

西尾强制链

前置知识: 链的基础

高阶

西尾强制链

前置知识:链的基础

描述

西尾强制链(Nishio Forcing Chain)是一种“反证删数”的技巧。

当你看到某个候选看起来“很可疑”,但又没法用普通技巧直接删掉它时,可以这样做:

  1. 选定一个要检验的候选(红色)
  2. 先假设它为真
  3. 用一连串“必须如此”的推理,把真假一路传下去(蓝色=被迫为真,黄色=被迫为假)
  4. 如果最终推到矛盾(比如某一行里某个数字完全没有位置可填)
    ⇒ 说明最开始的假设不成立
    ⇒ 这个候选就可以删除

详解

西尾强制链(详解)

先看上图:红色要删除的是 r1c3 中的候选数字 5
我们先做反证:假设 r1c3 = 5 为真。

接下来沿着链推理:

  • 蓝色候选:在这个假设下,被迫为真
  • 黄色候选:在这个假设下,被迫为假

你不需要一开始就把每一步都算清楚,只要抓住最终的矛盾点即可:

在上图中,推理最后会把 第 1 行里所有的候选数字 7 都排除掉,也就是“第 1 行没有 7 可以填”。
但数独里每一行都必须出现 1~9,因此这就是矛盾。

所以,最开始的假设 r1c3 = 5 不可能成立:
r1c3 中的候选数字 5 可以删除


例子

下面两张图是其它西尾强制链的例子,你可以先按这个顺序观察: 红色起点(假设为真)→ 蓝黄推导(真/假传导)→ 最终矛盾 → 回头删红色候选

西尾强制链(例子 A)

西尾强制链(例子 B)


如何寻找西尾强制链?

一句话:当你卡住时,挑一个关键候选做“反证”,看它会不会迅速推到矛盾。

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

  1. 优先挑“牵一发而动全身”的候选:双值格、共轭对附近的候选
  2. 假设它为真,然后只做确定性推理(能确定真/假就继续)
  3. 一旦出现矛盾(某格无候选 / 某行列宫某数字无处可放)
    ⇒ 这个起点候选就可以删掉