Sudoku Flow
数独百科 · 数学与计算

计算机如何解数独

更新于 2026-10-05

回溯法

求解器在空格中尝试填入一个符合规则的数字,然后继续。如果没有任何数字能通向解答,它就撤销之前的某个选择,再尝试其他数字。优先选择可填数字最少的格子,往往能大幅缩短搜索过程。

来源: Wikipedia: Sudoku solving algorithms, Peter Norvig: Solving Every Sudoku Puzzle

精确覆盖与舞蹈链

数独可以改写为精确覆盖问题:选择数字的填入位置,使每个格子,以及每一行、每一列和每一宫中的每个数字,都恰好被覆盖一次。在2000年11月的一篇论文中,唐纳德·克努特介绍了舞蹈链,这是高效执行其回溯算法X的一种方法;将它应用于数独的精确覆盖模型,可以快速找出一道题的所有解。

来源: Wikipedia: Sudoku solving algorithms, Knuth, Dancing links (arXiv cs/0011047, 2000)

随机搜索

有些程序先随机填满网格,再调整数字位置以减少冲突,采用的方法包括模拟退火或遗传算法。这些方法已作为替代方案受到研究;其效果取决于具体程序和题目。

来源: Wikipedia: Sudoku solving algorithms

模拟人类思路的求解器

提示引擎的任务有所不同:不仅要找出答案,还要展示人能够理解并执行的下一步。我们应用中的引擎按固定顺序尝试人类解题技巧,从隐性唯一数等最简单的技巧,到链和近锁定集等最难的技巧,并使用第一个能让它填入数字的技巧;较难的技巧会先排除候选数。引擎在一道题中使用的最难技巧,决定了该题在应用中的难度等级。

来源: 数独各难度需要你掌握哪些技巧

另见

Related articles

来源

全部文章 →

数独应用图标

想玩更多这样的数独?

我们还开发了一款适用于 iPhone、iPad、Mac 和 Android 的数独应用。应用完全没有广告,可以离线使用。你请求提示时,它会展示解题技巧,而不是直接填入一个数字。

Sudoku Flow 由 Rubigo Games 制作,他们也是本站推荐的数独应用的开发者。