grid_on

Sudoku Clean 素数独

技巧文档 / 起重机

起重机

前置知识: 链的基础

高阶

起重机

前置知识:链的基础

描述

起重机是一种“删候选”的单数短链技巧:只盯住一个数字 d

它和双线风筝很像,区别在于:
双线风筝是“宫里那段是弱链”,而起重机是“宫里那段是强链”。


详解

起重机示例

先看上图:目标数字是 6。链路是 r3c7 → r2c8 → r8c8 → r8c3,红色是要删除的 r3c3 中的候选 6,两端用蓝色标出。

为什么能删?看一个很短的反证就够了:

  • 假设红色候选 r3c3 = 6 为真
  • 同一行不能有两个 6,所以 r3c7 ≠ 6
  • 在同一宫里,6 只剩 r3c7r2c8 两个位置:既然 r3c7 不是 6,那么 r2c8 必须是 6(宫内强链)
  • 因为 r2c8 是 6,所以同一列里的 r8c8 ≠ 6(弱链)
  • 在第 8 行里,6 只剩 r8c8r8c3 两个位置:既然 r8c8 不是 6,那么 r8c3 必须是 6(行强链)
  • 可 r8c3 和 r3c3 在同一列,不可能同时为 6 → 矛盾

所以 r3c3 不可能是 6,红色候选 6 可以删除。


例子

下面两张图是更多起重机例子,你可以直接对照结构参考:

起重机示例 A

起重机示例 B


如何寻找起重机?

一句话:宫内强链 + 行/列强链,用一条同行/同列的弱链接成 L 形 → 删两端共视点

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

  1. 先选一个数字 d
  2. 找到一个宫:d 在宫里只剩 2 个候选位置(宫内强链)
  3. 再找到一条行或列:d 在这条行/列里也只剩 2 个候选位置(行/列强链)
  4. 看看这两条强链是否能通过“同一行”或“同一列”连成 L 形(中间那段就是弱链)
  5. 剩下的两个端点就是两端:能同时看见两端的位置,就是可删的候选 d