交替推理链
数独题目其实是一种逻辑推理题目,我们需要根据数独规则和盘面上给出的已知数,通过逻辑推理得到未填格中的数字是什么。
命题
“命题”是逻辑学中的一个重要概念,表示一个可以用“真”、“假”(或“是”、“否”)来回应的陈述。在数独中,“某单元格填某数”就是最简单的一种命题。另外还有诸如“某几个单元格里会出现某数字”这样的命题。
例如对于上面的盘面,“单元格
当我们观察第一列
对应地,“
已知数和答案数是恒为真的命题。例如上述盘面中
候选数是待判断真假的命题。如果一个候选数(即“某单元格填某数”这个命题)被判定为假,则应该被删除(即从对应单元格中删掉对应候选数)。同理,如果一个候选数被判定为真,则可以将该候选数提升为答案数(即在对应单元格中填写对应数字)。
关系
如果两个命题可以互相影响彼此的结果,那么则称两个命题之间存在“关系”。
仍以前一节的盘面为例,这次我们只关注候选数
所以,命题“
弱关系
这种前提为真可以推导出结论为假的关系也被成为“弱关系”。也可以说,在弱关系中,两个命题必有一假;或两个命题不可同时为真。
因为数独的规则,弱关系在数独中是普遍存在的。例如数独规则要求同一区域(行、列、宫)中,一个数字
又如数独规则要求每个单元格都恰好填入一个数字,所以位于同一个未填单元格中的任何两个候选数之间都存在弱关系(不考虑候选数少于两个的情况——如果没有暂时符合规则的候选数,说明当前盘面已经被破坏,要么是题目不合理,要么是截止目前的答案数中有错误;如果只有一个候选数,那么这就是一个单数技巧,应该将候选数提升为答案数)。上述盘面中,以单元格
强关系
注意上述的“关系”或称“弱关系”,都是从一个命题
但数独规则里的“恰好出现一次”,除了意味着“最多出现一次”,还意味着“至少出现一次”——于是我们就能发现一些更有用的关系。仍以前面的盘面为例,在第
又如上述盘面中未明确标出的单元格
这种前提为假可以推导出结论为真的关系称作“强关系”。也可以说,在强关系中,两个命题必有一真;或两个命题不可同时为假。
值得注意的是,强关系本质上也是一种弱关系,因为它也满足弱关系的要求(即某命题为真可以推导出另一命题为假)。所以在之后讨论解题技巧时,凡是需要弱关系的地方,如果存在强关系,也可以把强关系当做弱关系来使用。
关系的图示
在讨论链技巧时,我们可以用图示来表示命题之间的关系,这时也会用“节点”来指代命题。在图示中,命题/节点用实心小圆点表示,它们之间的关系用两点之间的线段表示,虚线表示弱关系,实线表示强关系。
强弱关系的删数逻辑
强关系和弱关系的一个重要作用就是帮助删除候选数,用于简化盘面。
当存在一个强关系时,如果某个命题
如上图所示,命题
根据强关系的定义,
以之前的盘面为例:
之前我们观察到,“
这个特例其实恰好是交叉区锁定技巧。根据该技巧,其实我们还可以确定
双值格和共轭对
从上面的删数逻辑可以看出来,强关系是整个逻辑的核心,弱关系只是辅助。只有强关系才能得出某两个命题必有一真的结论,进而通过弱关系得到某命题必然为假。
那么如何找到强关系呢?因为数独规则中存在“恰好一个”的说法,这种书法除了暗示了“最多一个”、“不能有重复”之外,还暗示了“至少一个”、“不能没有”,那么当某个限定条件只能被恰好两个命题满足时,我们就得到了强关系——这两个命题必有一真,不然不符合“至少一个”的要求。
那么从单元格和区域(行、列、宫)的角度出发,我们就能得到两种最直观的强关系——“双值格”和“共轭对”。
“双值格”指的是只有两个候选数的未填单元格。例如上面盘面中的R5C5,其中只有两个候选数3和4,所以“R5C5填3”和“R5C5填4”就是一个强关系,根据数独规则,它们二者必有一真。
“共轭对”指的是针对相同的某一个候选数d,它在某区域(某行、某列或某宫)中恰好只出现了两次。例如上面盘面中的候选数5,在第7行中它只出现了两次,分别在R7C3和R7C7中,所以“R7C3填5”和“R7C7填5”就是一个强关系,根据数独规则,它们二者必有一真。
组合节点
命题除了“某单元格填某数”这种简单形式,还可以组合起来使用,比如“某几个单元格里填某数”。
例如,在上面盘面中第
- 命题
:在单元格 、 、 中的某一个里填 。 - 命题
:在单元格 、 中的某一个填 。
不难发现,根据数独规则,第5宫必须出现恰好一个
这里的命题
交替推理链
前面我们看到了强弱关系删除候选数的能力,但之前提到的示例中只有一个强关系参与,而且看上去除了解释交叉区锁定技巧外似乎用途并不是很大。
但是当我们能找到一个由强弱关系交替出现形成的“链”时,有趣的现象就出现了。
上图表示存在四个命题
进而我们可以按照强弱交替的规律继续向链中添加节点(命题),只要确保链的开头和结尾都是强关系,就可以确保链头和链尾两个节点之间也满足强关系的定义。
这可以通过简单的数学归纳法进行证明——
- 链的前两个节点是强关系。
- 向1中其中加入一组弱、强关系后,会得到四个节点链,根据前面的分析,这四个节点的头尾节点形成强关系。
- 去掉2中的中间结点,只保留头尾两个节点,形成类似1中的强关系。
- 重复2,继续加入弱、强关系。
这样往复下去,可以得知只要强弱关系交替连接,并且链头两个节点之间和链尾两个节点之间都是强关系,就可以确定链头和链尾的节点之间是强关系。按照这种规律形成的链叫做“交替推理链”。如果能找到某命题
根据链的不同模式、长度,我们可以得到很丰富的数独解题技巧: