攻略 · 数独

数独进阶攻略:候选数、显式数与区块技巧、卡住时怎么回溯

数独不是数学题,是约束传播题。人脑和求解器跑的是同一套逻辑,只是人用铅笔和脑子,程序用变量和回溯。

EN中文

一、为什么需要候选数

只靠肉眼排除硬推,容易在两三个候选之间打转。候选数的思路是:先不急着定,把每格「还可能是哪些数字」列出来,让排除越走越窄。

注意有两个方向:问「这格还能填什么」是格子视角,问「这个数字还能落在哪」是数字视角。两套排除法其实是同一件事的两面,熟练之后会同时用。

二、候选数怎么手算:行、列、宫三步排除

行排除。同一行里已经有 5 和 7,那这一行剩下的空格都不可能是 5 和 7。

列排除。同一列里已经有 3,那这一列剩下的空格都不可能是 3。

宫排除。同一个 3×3 宫里已经有 9,这一宫剩下的空格都不能是 9。

三条一起用:一格在 1 到 9 里被排除到只剩最后一个数字,它就是隐性数(naked single)。

怎么记:本站这版不会替你在格子里标候选数,页面就是 81 个格子供你填。所以候选得自己写在纸上,一格一行,在格子边上写小数字;也可以另画一张表,列出「5 的候选位置」在哪几格。

不用每格都写。只在难啃的区域记,通常是候选超过两个的格子。候选一多就乱,乱了就容易把某个数字漏掉。

三、显式数与隐性数:别被中文译名坑了

隐性数(naked single):某一格只剩一个候选数,那格就是答案。名字里的 naked 指的是「格子自己把答案露出来了」。

显式数(hidden single):某个数字在某一行、一列或一宫里只剩一个落点,那格就是这个数字。名字里的 hidden 指的是「数字藏起来了,得你去找它的位置」。

中文译名在网上很乱,同一个词有人指格子有人指数字,混着看很容易搞反。以英文名为准:naked 是格子视角,hidden 是数字视角。

找显式数的做法:选一个你刚填进去的数字,比如 6,在它所在的行、列、宫里各扫一遍,看 6 还剩几个可能的落点;只剩一个,那格就是 6。

四、区块技巧:锁死候选与宣称

锁死候选(pointing)。某一行里,某个数字的所有候选位置都落在同一个宫内。那么这个数字在这个宫里就只剩那一行的那个位置可以放,其他行同宫的候选可以全划掉。

宣称(claiming)。某一宫里,某个数字的所有候选位置都落在同一行内。那么这个数字在这一行里就只剩那一宫的那个位置可以放。

两者都是缩小范围,最后仍要落到「某格候选唯一」或「某数字落点唯一」。区别是方向相反:锁死候选用行看宫,宣称用宫看行。

再往上一层是成对候选:两格的候选完全一样(比如都是 2 和 5),这两个数字在这两格里只能各占一个,可以合并处理;反过来,某个数字的两处候选完全一样,也能据此推出第三格。遇到这种局面,就是成对候选该上场了。

本站的题目都是唯一解。所以一旦你推出矛盾,那就是你的某一步错了,而不是题目有两个答案。矛盾是免费的错误探测器。

五、卡住时:反证法与回溯

卡住通常不是你不会,是上一步错了,或者需要更高级的技巧。顺序上先试回溯,再试反证。

反证法(假设法):假设某格填 X,然后从这格出发把整盘的约束推一遍。如果推出了矛盾,比如某个格同时只能是 5 和 7,那 X 就是错的,X 之外的那个候选才是答案。

回溯步骤:

一个实用经验:一格填下去之后你越推越乱,八成是这一格选错了候选。但别急着改,先把刚才用来排除它的理由重新读一遍,很多「错在最后一格」其实是那条排除规则本身用错了,比如把宫的约束当成了列的。

六、速查清单

七、现在就玩

打开数独在线版:三档难度、81 格手填、实时撞号提示、计时器,上面每一条技巧都能在这上面练。

还没入门看 数独怎么玩;想了解这玩意的来历,看 数独的来历;全部攻略 都在这儿。

本站为第三方镜像,上游开源项目是 andreynering/sudoku,采用 MIT 协议,作者 Andrej Nering。游戏本体版权归原作者所有。

同款变体

想换规则重玩,看 数独的 6 种变体。