高级
强制链(Forcing Chains)
追踪某候选数为真或为假的后果,直到每条路径都迫使出相同的结论。
强制链是逻辑解题的重炮。挑一个格子,追踪它每个候选数在网格中的推论。如果每个候选数都导向某处相同的填数或排除,那个结论就是确定的 — 无需猜测。
难题后期大多数“试错”的感觉,其实都是等待被严谨写下来的强制链。
如何发现它
选一个双值格。假设它的第一个候选数并传播被迫的填数;记下结果。重置,假设第二个候选数,再次传播。凡是两种假设都迫使同一个格子取同一个值(或同一次排除)之处,那个结果便无条件成立。
- 从一个格子的候选数出发。
- 传播每个候选数被迫的后果。
- 所有分支共享的结论得到证明。
纪律胜过猜测
强制链是逻辑,而非分叉:你把两个分支都记在心里,只在它们一致的地方采取行动。把链写出来能避免盲目试数所带来的错误。
解题示例
- 一个双值格显示 {1,4}。
- 假设 1:一连串唯一数迫使格子 Q 为 8。
- 重置,假设 4:另一连串也迫使格子 Q 为 8。
- 两个分支一致,所以 Q 无论如何都是 8。
- 在 Q 里填下 8,而无需解出起始格。
自己试试
6
3
2
6
9
3
8
4
7
8
5
4
9
9
8
4
2
3
7
7
1
8
4
5
3
7
Tap a cell, then a number, to practise.
常见问题
- 这只是猜测吗?
- 不是。你评估所有分支,只在每个分支都共享的结论上采取行动,所以结果完全是逻辑的。
- 我该什么时候动用强制链?
- 最后,在唯一数、区块候选数、鱼、翼和染色都用尽之后。
相关技巧
延伸阅读
- Introducing Chains and Links — SudokuWiki.org
- Chains and Loops (Forcing Chains, AIC) — HoDoKu
练习:强制链(Forcing Chains)
在真实棋盘上运用强制链(Forcing Chains) — 免费数独,支持笔记、提示和四种难度。
在真实棋盘上试一试