数独 · 约束满足
每行、每列、每宫填入 1-9 且不重复,感受约束传播的力量。
00:00
先点格子,再点下方数字填入。键盘 N 切换笔记,Delete 清除。
什么是数独?
数独是一种 9×9 的数字填充游戏。棋盘被划分为 9 个 3×3 的宫, 你的目标是让每一行、每一列、每一宫都恰好包含 1-9 这九个数字各一次。 初始给出的数字("线索")越少,谜题越难。
约束满足问题 (CSP)
数独是经典的约束满足问题:
- 变量:每个空格子
- 值域:1-9
- 约束:同行/同列/同宫不重复
CSP 广泛应用于排课、地图着色、电路布线等实际问题中。
回溯算法
- 找到下一个空格子
- 尝试填入一个满足约束的数字
- 递归地尝试解决剩余格子
- 如果卡住(无合法数字),回退上一步,换一个数再试
回溯 = 深度优先搜索 + 剪枝。每一步排除不可能的分支, 避免盲目遍历所有 9⁸¹ 种可能。
笔记 = 约束传播
在格子里标注"候选数字"(笔记),就是在手动做约束传播—— 每填入一个数字,其所在行、列、宫中的候选值都会被排除。 本游戏会在你填数时自动清理相关笔记。
拉丁方与数独
数独是带额外"宫"约束的拉丁方(Latin Square)。 拉丁方只要求每行每列不重复,数独额外要求每个 3×3 子格也不重复—— 这使得可行解从天文数字锐减到约 6.67×10²¹ 个。
试试"显示答案"
点击「答案」按钮可以查看回溯算法计算出的解。 对比你的解题过程和算法的解,思考人类推理和计算机搜索之间的异同。
