Platon Sudoku · 数独研习室
强制网 · 分步讲解
强制网的候选蕴含可分叉再汇合,通过矛盾或穷尽分支的共同结果得到结论。 排除被否定的候选,或执行全部穷尽分支共有的结果。
本课程改编自 Platon Sudoku App 的教学内容。你可以在这里读完完整实例,再到应用中继续学习和练习。
在 Google Play 查看 ↗辨认模式
强制网的候选蕴含可分叉再汇合,通过矛盾或穷尽分支的共同结果得到结论。
如何寻找
追踪每个前提和每条分支,核实连接,再比较矛盾或共同终点。
可以得出什么
排除被否定的候选,或执行全部穷尽分支共有的结果。
别看错了
不能跳过分支,也不能把单一路径的结果当成所有分支共有。
分步讲解 · 矛盾
本例从已保存的中途盘面开始,候选数包含此前逻辑排除的结果,并非刚刚自动生成的笔记。
蓝色:推理依据。绿色:结论。划线数字:排除的候选数。R1C1 表示第1行第1列。
步骤 1 · 观察位置
R1C3=7 只有成立与不成立两种状态。依赖图检查“R1C3=7 成立”;若它导致矛盾,就排除该状态并强制“R1C3=7 不成立”,因此两种可能已完整覆盖。这是 Forcing Net,而不是 Forcing Chain,因为已验证的依赖图发生扇出或汇合,不再是一条线性蕴含路径。本验证分支共有 49 个已验证节点。
R1C3=7 只有成立与不成立两种状态。依赖图检查“R1C3=7 成立”;若它导致矛盾,就排除该状态并强制“R1C3=7 不成立”,因此两种可能已完整覆盖。这是 Forcing Net,而不是 Forcing Chain,因为已验证的依赖图发生扇出或汇合,不再是一条线性蕴含路径。本验证分支共有 49 个已验证节点。步骤 2 · 推理过程
分支 1:假设 R1C3=7 成立。
分支 1:假设 R1C3=7 成立。步骤 3 · 推理过程
R1C3=7 已经成立,排除 {R1C3=2, R1C3=9, R1C8=7, R2C1=7, R3C1=7, R8C3=7}。
R1C3=7 已经成立,排除 {R1C3=2, R1C3=9, R1C8=7, R2C1=7, R3C1=7, R8C3=7}。步骤 4 · 推理过程
经过前面的排除,R8C3只剩 R8C3=3 一个选项。在当前假设下,它被迫成立。
经过前面的排除,R8C3只剩 R8C3=3 一个选项。在当前假设下,它被迫成立。步骤 5 · 推理过程
R8C3=3 已经成立,排除 R7C3=3。
R8C3=3 已经成立,排除 R7C3=3。步骤 6 · 推理过程
经过前面的排除,第7行只剩 R7C4=3 一个选项。在当前假设下,它被迫成立。
经过前面的排除,第7行只剩 R7C4=3 一个选项。在当前假设下,它被迫成立。步骤 7 · 推理过程
经过前面的排除,第8行只剩 R8C2=7 一个选项。在当前假设下,它被迫成立。
经过前面的排除,第8行只剩 R8C2=7 一个选项。在当前假设下,它被迫成立。步骤 8 · 推理过程
R8C2=7 已经成立,排除 R8C2=8。
R8C2=7 已经成立,排除 R8C2=8。步骤 9 · 推理过程
经过前面的排除,第8行只剩 R8C8=8 一个选项。在当前假设下,它被迫成立。
经过前面的排除,第8行只剩 R8C8=8 一个选项。在当前假设下,它被迫成立。步骤 10 · 推理过程
R8C8=8 已经成立,排除 R8C8=4。
R8C8=8 已经成立,排除 R8C8=4。步骤 11 · 推理过程
经过前面的排除,第1列只剩 R6C1=7 一个选项。在当前假设下,它被迫成立。
经过前面的排除,第1列只剩 R6C1=7 一个选项。在当前假设下,它被迫成立。步骤 12 · 推理过程
R6C1=7 已经成立,排除 R6C1=5。
R6C1=7 已经成立,排除 R6C1=5。步骤 13 · 推理过程
经过前面的排除,第8列只剩 R3C8=4 一个选项。在当前假设下,它被迫成立。
经过前面的排除,第8列只剩 R3C8=4 一个选项。在当前假设下,它被迫成立。步骤 14 · 推理过程
R3C8=4 已经成立,排除 {R3C8=1, R3C8=6}。
R3C8=4 已经成立,排除 {R3C8=1, R3C8=6}。步骤 15 · 推理过程
经过前面的排除,第1宫只剩 R3C1=2 一个选项。在当前假设下,它被迫成立。
经过前面的排除,第1宫只剩 R3C1=2 一个选项。在当前假设下,它被迫成立。步骤 16 · 推理过程
R3C1=2 已经成立,排除 R3C1=5。
R3C1=2 已经成立,排除 R3C1=5。步骤 17 · 推理过程
经过前面的排除,第9宫只剩 R9C7=4 一个选项。在当前假设下,它被迫成立。
经过前面的排除,第9宫只剩 R9C7=4 一个选项。在当前假设下,它被迫成立。步骤 18 · 推理过程
R9C7=4 已经成立,排除 R9C7=9。
R9C7=4 已经成立,排除 R9C7=9。步骤 19 · 推理过程
经过前面的排除,第9宫只剩 R7C9=9 一个选项。在当前假设下,它被迫成立。
经过前面的排除,第9宫只剩 R7C9=9 一个选项。在当前假设下,它被迫成立。步骤 20 · 推理过程
R3C8=4 已经成立,排除 R2C7=4。
R3C8=4 已经成立,排除 R2C7=4。步骤 21 · 推理过程
R6C1=7 已经成立,排除 R6C7=7。
R6C1=7 已经成立,排除 R6C7=7。步骤 22 · 推理过程
经过前面的排除,R6C7只剩 R6C7=6 一个选项。在当前假设下,它被迫成立。
经过前面的排除,R6C7只剩 R6C7=6 一个选项。在当前假设下,它被迫成立。步骤 23 · 推理过程
R6C7=6 已经成立,排除 R3C7=6。
R6C7=6 已经成立,排除 R3C7=6。步骤 24 · 推理过程
R7C4=3 已经成立,排除 R2C4=3。
R7C4=3 已经成立,排除 R2C4=3。步骤 25 · 推理过程
R7C9=9 已经成立,排除 {R1C9=9, R7C3=9}。
R7C9=9 已经成立,排除 {R1C9=9, R7C3=9}。步骤 26 · 推理过程
R8C8=8 已经成立,排除 R1C8=8。
R8C8=8 已经成立,排除 R1C8=8。步骤 27 · 推理过程
经过前面的排除,第3行只剩 R3C9=6 一个选项。在当前假设下,它被迫成立。
经过前面的排除,第3行只剩 R3C9=6 一个选项。在当前假设下,它被迫成立。步骤 28 · 推理过程
R3C9=6 已经成立,排除 R3C9=1。
R3C9=6 已经成立,排除 R3C9=1。步骤 29 · 推理过程
经过前面的排除,第9行只剩 R9C1=9 一个选项。在当前假设下,它被迫成立。
经过前面的排除,第9行只剩 R9C1=9 一个选项。在当前假设下,它被迫成立。步骤 30 · 推理过程
R9C1=9 已经成立,排除 R9C1=5。
R9C1=9 已经成立,排除 R9C1=5。步骤 31 · 推理过程
经过前面的排除,第1列只剩 R2C1=5 一个选项。在当前假设下,它被迫成立。
经过前面的排除,第1列只剩 R2C1=5 一个选项。在当前假设下,它被迫成立。步骤 32 · 推理过程
经过前面的排除,第3列只剩 R2C3=9 一个选项。在当前假设下,它被迫成立。
经过前面的排除,第3列只剩 R2C3=9 一个选项。在当前假设下,它被迫成立。步骤 33 · 推理过程
经过前面的排除,第3宫只剩 R2C9=1 一个选项。在当前假设下,它被迫成立。
经过前面的排除,第3宫只剩 R2C9=1 一个选项。在当前假设下,它被迫成立。步骤 34 · 推理过程
经过前面的排除,R1C8只剩 R1C8=5 一个选项。在当前假设下,它被迫成立。
经过前面的排除,R1C8只剩 R1C8=5 一个选项。在当前假设下,它被迫成立。步骤 35 · 推理过程
R1C8=5 已经成立,排除 R1C9=5。
R1C8=5 已经成立,排除 R1C9=5。步骤 36 · 推理过程
经过前面的排除,R1C9只剩 R1C9=8 一个选项。在当前假设下,它被迫成立。
经过前面的排除,R1C9只剩 R1C9=8 一个选项。在当前假设下,它被迫成立。步骤 37 · 推理过程
R1C9=8 已经成立,排除 R2C7=8。
R1C9=8 已经成立,排除 R2C7=8。步骤 38 · 推理过程
R2C1=5 已经成立,排除 R2C4=5。
R2C1=5 已经成立,排除 R2C4=5。步骤 39 · 推理过程
R2C3=9 已经成立,排除 R2C7=9。
R2C3=9 已经成立,排除 R2C7=9。步骤 40 · 推理过程
经过前面的排除,R2C7只剩 R2C7=7 一个选项。在当前假设下,它被迫成立。
经过前面的排除,R2C7只剩 R2C7=7 一个选项。在当前假设下,它被迫成立。步骤 41 · 推理过程
R2C7=7 已经成立,排除 R2C4=7。
R2C7=7 已经成立,排除 R2C4=7。步骤 42 · 推理过程
R2C9=1 已经成立,排除 R2C4=1。
R2C9=1 已经成立,排除 R2C4=1。步骤 43 · 推理过程
这个假设让R2C4没有可用的数字或落点:{R2C4=1, R2C4=3, R2C4=5, R2C4=7}。每格、每个区域中缺少的数字都必须有选项,因此假设不可能成立。
这个假设让R2C4没有可用的数字或落点:{R2C4=1, R2C4=3, R2C4=5, R2C4=7}。每格、每个区域中缺少的数字都必须有选项,因此假设不可能成立。步骤 44 · 撤回上一种矩形填法
撤回这个假设和由它产生的结果。恢复原候选快照,再检查下一种可能。
撤回这个假设和由它产生的结果。恢复原候选快照,再检查下一种可能。步骤 45 · 结论
因为不可能在这个结构中成立,所以可以删除R1C3=7。
因为不可能在这个结构中成立,所以可以删除R1C3=7。可以得出什么
因为不可能在这个结构中成立,所以可以删除R1C3=7。
强制网 · 排除被否定的候选,或执行全部穷尽分支共有的结果。分步讲解 · 共同结果
本例从已保存的中途盘面开始,候选数包含此前逻辑排除的结果,并非刚刚自动生成的笔记。
蓝色:推理依据。绿色:结论。划线数字:排除的候选数。R1C1 表示第1行第1列。
步骤 1 · 观察位置
根状态全集 R7C5=2, R7C5=4, R7C5=9 恰好覆盖R7C5中的全部可行起点,因此这些根分支已经穷尽全部可能。 这是 Forcing Net,而不是 Forcing Chain,因为已验证的依赖图发生扇出或汇合,不再是一条线性蕴含路径。依赖图共有 3 个根分支、58 个已验证节点;要检查的共同结果是“R3C6=2 成立”。
根状态全集 R7C5=2, R7C5=4, R7C5=9 恰好覆盖R7C5中的全部可行起点,因此这些根分支已经穷尽全部可能。 这是 Forcing Net,而不是 Forcing Chain,因为已验证的依赖图发生扇出或汇合,不再是一条线性蕴含路径。依赖图共有 3 个根分支、58 个已验证节点;要检查的共同结果是“R3C6=2 成立”。步骤 2 · 推理过程
分支 1:假设 R7C5=2 成立。
分支 1:假设 R7C5=2 成立。步骤 3 · 推理过程
R7C5=2 已经成立,排除 R3C5=2。
R7C5=2 已经成立,排除 R3C5=2。步骤 4 · 推理过程
经过前面的排除,第3行只剩 R3C6=2 一个选项。在当前假设下,它被迫成立。
经过前面的排除,第3行只剩 R3C6=2 一个选项。在当前假设下,它被迫成立。步骤 5 · 撤回上一种矩形填法
撤回这个假设和由它产生的结果。恢复原候选快照,再检查下一种可能。
撤回这个假设和由它产生的结果。恢复原候选快照,再检查下一种可能。步骤 6 · 推理过程
分支 2:假设 R7C5=4 成立。
分支 2:假设 R7C5=4 成立。步骤 7 · 推理过程
R7C5=4 已经成立,排除 R8C5=4。
R7C5=4 已经成立,排除 R8C5=4。步骤 8 · 推理过程
经过前面的排除,R8C5只剩 R8C5=2 一个选项。在当前假设下,它被迫成立。
经过前面的排除,R8C5只剩 R8C5=2 一个选项。在当前假设下,它被迫成立。步骤 9 · 推理过程
R8C5=2 已经成立,排除 R3C5=2。
R8C5=2 已经成立,排除 R3C5=2。步骤 10 · 推理过程
经过前面的排除,第3行只剩 R3C6=2 一个选项。在当前假设下,它被迫成立。
经过前面的排除,第3行只剩 R3C6=2 一个选项。在当前假设下,它被迫成立。步骤 11 · 撤回上一种矩形填法
撤回这个假设和由它产生的结果。恢复原候选快照,再检查下一种可能。
撤回这个假设和由它产生的结果。恢复原候选快照,再检查下一种可能。步骤 12 · 推理过程
分支 3:假设 R7C5=9 成立。
分支 3:假设 R7C5=9 成立。步骤 13 · 推理过程
R7C5=9 已经成立,排除 {R7C7=9, R7C8=9, R7C9=9}。
R7C5=9 已经成立,排除 {R7C7=9, R7C8=9, R7C9=9}。步骤 14 · 推理过程
经过前面的排除,R7C8只剩 R7C8=7 一个选项。在当前假设下,它被迫成立。
经过前面的排除,R7C8只剩 R7C8=7 一个选项。在当前假设下,它被迫成立。步骤 15 · 推理过程
R7C8=7 已经成立,排除 {R7C9=7, R9C7=7, R9C8=7}。
R7C8=7 已经成立,排除 {R7C9=7, R9C7=7, R9C8=7}。步骤 16 · 推理过程
经过前面的排除,R7C9只剩 R7C9=8 一个选项。在当前假设下,它被迫成立。
经过前面的排除,R7C9只剩 R7C9=8 一个选项。在当前假设下,它被迫成立。步骤 17 · 推理过程
R7C9=8 已经成立,排除 {R7C7=8, R8C7=8, R9C7=8}。
R7C9=8 已经成立,排除 {R7C7=8, R8C7=8, R9C7=8}。步骤 18 · 推理过程
经过前面的排除,第9行只剩 R9C1=7 一个选项。在当前假设下,它被迫成立。
经过前面的排除,第9行只剩 R9C1=7 一个选项。在当前假设下,它被迫成立。步骤 19 · 推理过程
经过前面的排除,第7列只剩 R4C7=8 一个选项。在当前假设下,它被迫成立。
经过前面的排除,第7列只剩 R4C7=8 一个选项。在当前假设下,它被迫成立。步骤 20 · 推理过程
R4C7=8 已经成立,排除 R4C7=5。
R4C7=8 已经成立,排除 R4C7=5。步骤 21 · 推理过程
经过前面的排除,第9列只剩 R4C9=7 一个选项。在当前假设下,它被迫成立。
经过前面的排除,第9列只剩 R4C9=7 一个选项。在当前假设下,它被迫成立。步骤 22 · 推理过程
R4C9=7 已经成立,排除 R4C9=9。
R4C9=7 已经成立,排除 R4C9=9。步骤 23 · 推理过程
经过前面的排除,第9列只剩 R6C9=9 一个选项。在当前假设下,它被迫成立。
经过前面的排除,第9列只剩 R6C9=9 一个选项。在当前假设下,它被迫成立。步骤 24 · 推理过程
R6C9=9 已经成立,排除 R6C9=1。
R6C9=9 已经成立,排除 R6C9=1。步骤 25 · 推理过程
经过前面的排除,第6宫只剩 R5C7=1 一个选项。在当前假设下,它被迫成立。
经过前面的排除,第6宫只剩 R5C7=1 一个选项。在当前假设下,它被迫成立。步骤 26 · 推理过程
R5C7=1 已经成立,排除 {R5C7=5, R5C7=7}。
R5C7=1 已经成立,排除 {R5C7=5, R5C7=7}。步骤 27 · 推理过程
经过前面的排除,第6宫只剩 R4C8=5 一个选项。在当前假设下,它被迫成立。
经过前面的排除,第6宫只剩 R4C8=5 一个选项。在当前假设下,它被迫成立。步骤 28 · 推理过程
R4C8=5 已经成立,排除 {R4C5=5, R8C8=5}。
R4C8=5 已经成立,排除 {R4C5=5, R8C8=5}。步骤 29 · 推理过程
R5C7=1 已经成立,排除 {R2C7=1, R5C1=1}。
R5C7=1 已经成立,排除 {R2C7=1, R5C1=1}。步骤 30 · 推理过程
R9C1=7 已经成立,排除 R5C1=7。
R9C1=7 已经成立,排除 R5C1=7。步骤 31 · 推理过程
经过前面的排除,第5行只剩 R5C2=7 一个选项。在当前假设下,它被迫成立。
经过前面的排除,第5行只剩 R5C2=7 一个选项。在当前假设下,它被迫成立。步骤 32 · 推理过程
R5C2=7 已经成立,排除 R5C2=3。
R5C2=7 已经成立,排除 R5C2=3。步骤 33 · 推理过程
经过前面的排除,第8行只剩 R8C7=5 一个选项。在当前假设下,它被迫成立。
经过前面的排除,第8行只剩 R8C7=5 一个选项。在当前假设下,它被迫成立。步骤 34 · 推理过程
R8C7=5 已经成立,排除 {R8C7=2, R8C7=6}。
R8C7=5 已经成立,排除 {R8C7=2, R8C7=6}。步骤 35 · 推理过程
经过前面的排除,第1列只剩 R1C1=1 一个选项。在当前假设下,它被迫成立。
经过前面的排除,第1列只剩 R1C1=1 一个选项。在当前假设下,它被迫成立。步骤 36 · 推理过程
经过前面的排除,第7列只剩 R7C7=6 一个选项。在当前假设下,它被迫成立。
经过前面的排除,第7列只剩 R7C7=6 一个选项。在当前假设下,它被迫成立。步骤 37 · 推理过程
R7C7=6 已经成立,排除 R7C7=2。
R7C7=6 已经成立,排除 R7C7=2。步骤 38 · 推理过程
经过前面的排除,第9宫只剩 R9C7=2 一个选项。在当前假设下,它被迫成立。
经过前面的排除,第9宫只剩 R9C7=2 一个选项。在当前假设下,它被迫成立。步骤 39 · 推理过程
R9C7=2 已经成立,排除 R9C7=9。
R9C7=2 已经成立,排除 R9C7=9。步骤 40 · 推理过程
经过前面的排除,第9宫只剩 R9C8=9 一个选项。在当前假设下,它被迫成立。
经过前面的排除,第9宫只剩 R9C8=9 一个选项。在当前假设下,它被迫成立。步骤 41 · 推理过程
R9C8=9 已经成立,排除 R9C8=3。
R9C8=9 已经成立,排除 R9C8=3。步骤 42 · 推理过程
R1C1=1 已经成立,排除 R2C3=1。
R1C1=1 已经成立,排除 R2C3=1。步骤 43 · 推理过程
经过前面的排除,第2行只剩 R2C5=1 一个选项。在当前假设下,它被迫成立。
经过前面的排除,第2行只剩 R2C5=1 一个选项。在当前假设下,它被迫成立。步骤 44 · 推理过程
R2C5=1 已经成立,排除 R2C5=5。
R2C5=1 已经成立,排除 R2C5=5。步骤 45 · 推理过程
经过前面的排除,第9行只剩 R9C3=3 一个选项。在当前假设下,它被迫成立。
经过前面的排除,第9行只剩 R9C3=3 一个选项。在当前假设下,它被迫成立。步骤 46 · 推理过程
经过前面的排除,第5列只剩 R5C5=5 一个选项。在当前假设下,它被迫成立。
经过前面的排除,第5列只剩 R5C5=5 一个选项。在当前假设下,它被迫成立。步骤 47 · 推理过程
R5C5=5 已经成立,排除 R5C5=3。
R5C5=5 已经成立,排除 R5C5=3。步骤 48 · 推理过程
R9C3=3 已经成立,排除 R5C3=3。
R9C3=3 已经成立,排除 R5C3=3。步骤 49 · 推理过程
经过前面的排除,第5行只剩 R5C6=3 一个选项。在当前假设下,它被迫成立。
经过前面的排除,第5行只剩 R5C6=3 一个选项。在当前假设下,它被迫成立。步骤 50 · 推理过程
R5C6=3 已经成立,排除 R3C6=3。
R5C6=3 已经成立,排除 R3C6=3。步骤 51 · 推理过程
经过前面的排除,R3C6只剩 R3C6=2 一个选项。在当前假设下,它被迫成立。
经过前面的排除,R3C6只剩 R3C6=2 一个选项。在当前假设下,它被迫成立。步骤 52 · 推理过程
所有可能分支都得到同一事实:R3C6=2 成立。撤回全部假设后,这一事实仍然必然成立。
所有可能分支都得到同一事实:R3C6=2 成立。撤回全部假设后,这一事实仍然必然成立。步骤 53 · 结论
根据这个结构,R3C6=2必须成立。
根据这个结构,R3C6=2必须成立。可以得出什么
根据这个结构,R3C6=2必须成立。
强制网 · 排除被否定的候选,或执行全部穷尽分支共有的结果。