数独之群星闪耀一:简单着色法 1
引言
有些数独策略很复杂,绞尽脑汁半天,最后只是消除了一个候选数;还有一些数独策略,只要按部就班,只要像搬砖一样勤勤恳恳,消除的候选数就可以星罗棋布,犹如夜空中群星闪耀。
简单着色法(Simple Coloring)就是这种可能会群星闪耀的数独策略。
例一
先举一个例子,让我们来看看什么是简单着色法。
第一步
假设我们准备了绿和蓝两种颜色的铅笔。
我们从R1C5[8]开始,先把R1C5[8]标为绿色。
第二步
我们先考虑一个问题:
如果一个单元(一行、一列或一宫)内,某个候选数只存在于两个格子中,那么它们有什么特点?
比如在第2宫只有两个格子有候选数8,即R1C5[8]和R2C6[8],它们是一个非此即彼的关系。也就是说,要么R1C5取8而R2C6不取8,要么R1C5不取8而R2C6取8。
我们以前也把这种关系定义为强关系,R1C5[8]=R2C6[8],即一个不取另一个必取。同时它们也是弱关系,R1C5[8]-R2C6[8],即一个取另一个不能取。
第二步就是,把与上一步标为绿色的候选数8有强关系的候选数8找出来,标为蓝色。因此,我们把R2C6[8]和R4C5[8]标为蓝色。
第三步
第三步就是,把与上一步标为蓝色的候选数8有强关系的候选数8找出来,标为绿色。因此,我们把R2C3[8]、R4C3[8]和R6C6[8]标为绿色。
然后我们再重复第二步、第三步,直到没有新的绿色或蓝色的候选数。不过,我们现在就找不到新的需要标为蓝色或绿色的候选数8了,因此,这个标注蓝色和绿色的过程就结束。
第四步
我们已经标注了两个蓝色候选数,四个绿色候选数。我们发现:我们要么取两个蓝色;要么取四个绿色。
这个推理是简单的。对于候选数8,比如我们取一个绿色,那么就会导致不取更多的蓝色,而不取蓝色,又会导致取更多绿色,如此反复,最后是取所有的绿色,而不取所有的蓝色。反之亦然。
现在我们注意两个候选数R2C3[8]和R4C3[8],它们同为绿色,并且在同一列。
如果我们取绿色候选数,必同时取R2C3[8]和R4C3[8],但是在第3列,不可能同时取两个8,因此,取绿色是不行的。
既然取四个绿色不行,我们就只能取两个蓝色候选数,删除四个绿色候选数。
第五步
按第四步分析,我们在一个单元(第3列)中找到了两个相同的颜色,那么这个颜色的所有候选数都应该删除,而要取另一个颜色的所有候选数。
按习惯,我们用红色表示删除的候选数,用绿色表示选取的候选数,得到下面的图。在操作上,我们可以让R2C6和R4C5取8。
上面这个过程,就是一个完整的简单着色法的策略。
例二
上面的例子,是同一列中有相同的颜色。这个例子是同一行有相同的颜色。这个例子中,我们标注8的颜色后,发现在第5行的有两个8取相同颜色,因此,应该取两个绿色的8,而删除所有的红色的8。
例三
上面的两个例子,是同一列或同一行中有相同的颜色。这个例子是同一宫有相同的颜色。这个例子中,我们标注1的颜色后,发现在第9宫有两个1取相同颜色,因此,应该取三个绿色的1,而删除所有的红色的1。
小结
我们介绍了一个既简单又爽的策略,简单着色法。说它可以一次删除多个候选数,不如说它一次可以确定多个格子中的取值。
它的步骤是这样的:
- 把一个候选数为标为绿;
- 找出上一步与标为绿的候选数有强关系的相同值的候选数,标为蓝;
- 找出上一步与标为蓝的候选数有强关系的相同值的候选数,标为绿;
- 重复2和3步直到没有更多的候选数可标为绿或蓝。
- 找出有两个相同颜色的候选数的单元,删除所有这个颜色的候选数,选择所有另一个颜色的候选数。