给定一个未解的数独,如何证明它有唯一解?
最佳答案
尝试找到两个解决方案。
最简单的算法是蛮力recursive algorithm与回溯。找到第一个解决方案后,回溯并寻找第二个。这很慢,但(与仅依赖逻辑的算法不同)它保证最终能够找到所有的解决方案。因此,如果该算法终止时只找到一个解,那么该解一定是唯一的。
这适用于简单的问题,但对于较难的问题可能需要数小时或数天。如果您需要更快的速度,可以使用许多优化。
一个简单的优化是跟踪每个方 block 的候选列表。在每一步找到候选人最少的方格。如果只有一个候选,选择那个数字,更新网格和其他方 block 的候选,然后继续。如果候选人数为零,您就知道您之前做出的猜测是错误的,因此您应该回溯。
更高级的优化涉及寻找模式,让您无需猜测即可推断出数字。以下是一些示例:
关于algorithm - 如何证明一个数独解法是独一无二的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5052866/