隐式技巧
隐式技巧是数独求解中的重要方法,通过分析候选数在区域中的分布来发现消除机会。类似于显集,隐集是解决数独谜题的核心解题方法。
隐单
隐单 (Hidden Single,也被译为排除) 是指当一个候选数在某个区域内只出现在一个格子中时,根据数独规则,该区域中必须要填入这个数字一次,所以这个数字只能填在这个格子里。
图中 列A (蓝色区域)的候选数 2 只出现在格子 A5 中,根据数独规则, 列A 中必须要填一个 2 ,所以 A5 中必须填 2 。因为格子 A5 中有多个候选数,答案比较隐蔽,所以叫 隐单 。
隐集
隐集 (Hidden Set 或 Hidden Subset,也被译为隐性数组) 是指在同一区域中,如果 n 个候选数只出现在 n 个格子中,其中 ,显然这 n 个数字只能填这 n 个格子里,所以这些格子中的其它候选数可以全部消除。
隐单 可以看作是 隐集 的特殊情况,当 时。
隐双
隐双 (Hidden Pair,也被译为隐性二数组、隐性数对) 是 隐集 的情况。也就是, 2 个候选数只出现在 2 个格子中。
图中 宫9 (蓝色区域)中,候选数 6 和 8 只出现在格子 G7 和 I9 中,所以,这 2 个数字只能填在这 2 个格子里,所以, G7 和 I9 中的其它候选数可以全部消除。
图中 行1 (蓝色区域)中,候选数 7 和 9 只出现在格子 B1 和 G1 中,所以,这 2 个数字只能填在这 2 个格子里,所以, B1 和 G1 中的其它候选数可以全部消除。
隐三
隐三 (Hidden Triple,也被译为隐性三数组) 是 隐集 的情况。也就是, 3 个候选数只出现在 3 个格子中。
图中 宫3 (蓝色区域)中,候选数 1 、 5 和 9 只出现在格子 G2 、 I2 和 G3 中,所以,这 3 个数字只能填在这 3 个格子里,所以, G2 、 I2 和 G3 中的其它候选数可以全部消除。
图中 行1 (蓝色区域)中,候选数 3 、 7 和 8 只出现在格子 B1 、 D1 和 F1 中,所以,这 3 个数字只能填在这 3 个格子里,所以, B1 、 D1 和 F1 中的其它候选数可以全部消除。
隐四
隐四 (Hidden Quadruple,也被译为隐性四数组) 是 隐集 的情况。也就是, 4 个候选数只出现在 4 个格子中。
图中 宫7 (蓝色区域)中,候选数 3 、 6 、 7 和 9 只出现在格子 A7 、 B7 、 A8 和 B8 中,所以,这 4 个数字只能填在这 4 个格子里,所以, A7 、 B7 、 A8 和 B8 中的其它候选数可以全部消除。
图中 宫1 (蓝色区域)中,候选数 1 、 3 、 8 和 9 只出现在格子 A1 、 A2 、 B2 和 C2 中,所以,这 4 个数字只能填在这 4 个格子里,所以, A1 、 A2 、 B2 和 C2 中的其它候选数可以全部消除。
如何发现隐集
识别 隐集 的关键步骤:
- 观察候选数分布 :在一个区域中,找出只出现在少数几个格子中的候选数
- 检查数量匹配 :检查是否有 n 个数字只出现在 n 个格子中:
- 1 个数字只出现在 1 个格子中 → 隐单
- 2 个数字只出现在 2 个格子中 → 隐双
- 3 个数字只出现在 3 个格子中 → 隐三
- 4 个数字只出现在 4 个格子中 → 隐四
- 消除其他候选数 :一旦找到 隐集 ,从这些格子中删除 隐集 数字以外的候选数
使用技巧
- 从小到大搜索 :先寻找 隐单 ,再寻找 隐双 ,依此类推
- 重点关注限制性候选数 :优先观察只出现在少数几个格子中的候选数
- 结合显集技巧 : 隐集 和 显集 技巧相辅相成,可以交替使用
显集和隐集的互补关系
你可能会好奇:为什么在各种数独技巧例子中,从来没有见过显五、隐五这些技巧的例子呢?
这是因为,在数独中, 显集 和 隐集 是一对互补的概念,也可以理解为,同一个消除逻辑的两种不同表达方式。当我们在一个区域中发现 显集 时,其它候选数会自然形成 隐集 ;反之,当我们发现 隐集 时,区域中未填写数字的其它格子也会形成 显集 ,并且他们消除的候选数是一样的。
例子1:显三与隐三互补
显集视角:

图中 行5 存在一个 显三 :格子集 包含候选数集 。
隐集视角:

同一状态下,从隐集角度观察: 行5 存在一个 隐三 :候选数集 只出现在格子集 中。
可以观察到,两种视角消除的候选数完全相同。
例子2:隐三与显四互补
隐集视角:

图中 行2 存在一个 隐三 :候选数集 只出现在格子集 中。
显集视角:

同一状态下,从显集角度观察: 行2 存在一个 显四 :格子集 包含候选数集 。
可以观察到,它们消除的候选数也是一样的。
如何找互补集合
无论你已经找到的是隐集还是显集,同区域中,其它未填写数字的格子,就是它的互补集合所在的格子。
隐式技巧理论(选学)
隐集的定义
隐集 (广义,包含隐单)是指在一个区域 中存在非空候选数集 ,这些数字仅出现在该区域的格子集 中,且 。
隐集技巧的证明
命题 :在区域 中,若存在候选数集 ,这些候选数在区域 中所在的格子集合为 ,形成隐集,则:
- 中的数字将填入 中的格子,且每个数字正好填写一次
- 格子集 中不属于 的候选数可以被消除
证明 :
根据隐集的定义, 中的候选数在区域中只出现在 中的格子里
根据数独规则,可以知道, 中的每个数字必须填入 中的某个格子。
又因为 ,且每个格子只能填一个数字,所以 中的每个数字正好填入 中的一个格子。
所以,中不可能填写 以外的数字。
所以, 中格子里不属于 的候选数都可以被消除。
互补关系
显集的补集为隐集的证明
命题 :
在区域 中,设 为该区域内未填写数字的格子集合,其候选数集合为 ,显然有 。若 中的子集 构成一个显集,其候选数集合为 ,设剩余的格子集合为 ,设剩余的候选数 ,则候选数集合 在格子集 中形成隐集。
证明 :
注意, 并不是 的候选数集合
根据 的定义,我们知道 中的数字未出现在已填的格子中,也未出现在 中。 所以 中的候选数在区域 中只出现在 中。
而
因为
另外,根据显集的定义,
所以
所以 中的候选数在区域 中只出现在 中,且 ,这就是隐集的定义。
所以候选数集合 在格子集 中形成隐集。
隐集的补集是显集的证明
命题 :
在区域 中,设 为该区域内所有未填写数字的格子集合,其候选数集合为 ,显然有 。若候选数集合为 中在 中形成隐集,设剩余的格子集合为 ,则 是显集。
证明 :
设 的候选数集合为
根据隐集的定义, 中的候选数在区域 中只出现在 中
所以这些候选数没有出现在 中
所以
所以
现在我们来计算一下集合大小:
因为 , 所以:
因为
另外,根据隐集的定义,
所以
显然,如果 ,数独无解,所以:
。
这就是显集的定义。所以 为显集。