数独高级技巧(5):唯一性(Uniqueness)- 上篇

2020-03-26   数独技巧

唯一性的技巧基于标准数独只能有一个答案。

如果你做的数独没有提前说明会有多个答案的话,我觉得这个数独是合格的。在数独生成算法中,在挖空的时候会有一步是否有多解的检测,如果有多解,说明这个格子不能挖掉。

这个技巧里面有两个典型结构,Unique Rectangle (UR)/唯一矩形Binary Universal Grave (BUG)/全双值坟墓


Unique Rectangle (UR)


看上面这个题目,剩下 4 个格子没有填,无论 R2C1 = 6 还是 R2C1 = 8,这个数独都可以解决,符合数独的基本规则,同一行、列、宫都是 1-9 不重复。但这个数独有两个解了,他并不是一个合格的标准数独。

Binary Universal Grave (BUG)

BUG 是 UR 的一种更加广泛的变形,所有候选数的格子都是双值,而且每个候选数在行、列、宫都只出现 2 次,所以这个数独要么有双解,要么没有解。


好了,上面说了这两种结构,但并没有任何的解题技巧,因为前面这两种结构都会导致双解,这并不是我们想要的,如果我们做的是标准数独(只有一个解),那么我们肯定不能让这样的结构出现,这样我们的解题方法就来了。

再次强调,下面的解法只能针对标准数独(只有一个解)

好,我们先说容易理解的

BUG+1

什么是 BUG + 1 呢,BUG 是指当你填完所有的候选数,已经无法再确定任何数字的时候,所有未填上数字的格子都是两个候选数,这样的结构是 BUG(全双值坟墓),那当其中有一个格子是 3 个候选数,这样的结构是 BUG+1。

BUG+1 的解决方法很简单,我们需要避免这个数独成为 BUG 结构,所以应该把填上会出现 BUG 结构的数字删除,简单理解就是那一个单元只出现两次的数字删除(或者说那个格子的数字就是那一个单元出现 3 次的数字)

看一个例子


上图中 R1C8,3 无论在行、列、宫都只出现了 2 次,5 也是如此,那么 3 和 5 都可以删除,R1C8 = 6


你们应该知道 R7C2 应该填什么对吧,看哪个数字出现了 3 次。

好了,我再放一个看上去是 BUG+1,但不能用 BUG+1 技巧的例子上来。


看上去,R7C6 是 3 个数字,其他的都是两个数字,但这个题目有一个问题是,9 在 R7 出现了 3 次,在 C6 也出现了 3 次,但和这个 3 值格子并没有任何关系,所以它并不是一个 BUG +1 结构,也不能使用 BUG+1 技巧。

BUG+1 的解题方式就是利用标准数独只有一个解这个技巧,我们要避免 BUG 出现,因为出现 BUG 要么双解要么无解,那么 BUG+2 是不是也可以用?

在某些时候,确实是可以的,来看例子


这是一个 BUG+2,R8C3 和 R2C8 里面有两个 3 值,出现 3 次的数字都是 4,我们要避免出现 BUG,那么 R8C3 和 R2C8 的 4 至少要成立一个,用链来表示就是 R8C3{4}==R2C8{4},所以他们的交叉点可以删除。


再看一个


R5C7 和 R7C7 都是 5 出现 3 次,R5C7{5}==R7C7{5},删除他们共同作用格,就是 C7 上其他的 5

再留一个题目大家想想


这个题可以从全局唯一和局部唯一都可以解释,欢迎评论中和我讨论。

BUG 的技巧一定要是局势符合定义才能用,上面我也给了不能用的反例,而且一定是标准数独才能用,有一些 App 的题目没有说明,但他却不是唯一解,那也用不了这个技巧。App 的图标我会放到下面。


上面这个数独的题目会有双解出现,就不要尝试用这个技巧了。

BUG 的局势并不会特别常见,但碰到的时候你们知道有这么个方法会直捣黄龙。

UR 更常见一点,关于 UR 的解题方法我们放到下一篇中来讨论。

最后广告时间

如果你是 iOS 系统,可以下载我做的 App 来训练这些技巧,专家难度一定会让你用上这些高级技巧的


Appstore 搜索 禅数独 下载