高阶数独
高阶数独
基本规则略
资源
群 368802169 里找的资源,向神的教材网站: https://sudoku.kazusa.tech/ (非常多高阶技巧)
目录
数独概述
- 数独初介绍
- 坐标
- 历史由来
直观技巧
- 唯一余数
- 做题策略 - 基础概念
- 数字锁定策略
- 剩余数的概念
- 错题
局部标记技巧
- 割补 (LoL)
- 直观数组
- 直观隐性数组
- 直观显性数组
- 直观复杂出数
- 做题策略 - 标记
- 候选数的概念
- 直观和局标技巧在全标下的样子
- 笔记的概念
全部标记技巧
- 标准鱼
- XY-Wing 及其推广
- W-Wing
- 唯一矩形 (UR)
- 可规避矩形 (AR)
- 唯一环 (UL)
- 扩展矩形 (XR)
- 全双值格致死解法 (BUG)
- 欠一数组 (ALC)
- 融化待定数组 (SdC)
- 跨区数组 (DDS)
- 伪数组 (ESP)
- 均衡数组
- 烟花数组
链理论
- 双强链
- 同数链和异数链
- 区块链
- 待定数组链 (ALS 链)
- 隐性待定数组链 (AHS 链)
- 毛刺数组链
- 待定唯一矩形链 (AUR 链)
- 待定可规避矩形链 (AAR 链)
- 环
- 强制链
- 动态链
包装
- 染色法
- 代数法
构造
- 唯一矩形构造
- Wing 构造
- 毛刺和毛边
- 鱼构造
- 绽放
- 牺牲
- 外部环
秩理论
- 秩理论初步
- 秩的三种取值
- 三元组
- 复杂鱼
- 守护者
- 网 (MSLS)
- 复数鱼
- 弱区域和删数的秩
- 递归分析
- 秩的修正
- 不饱和鱼
- 解鱼
飞鱼
- 飞鱼的基本推理
- 目标单元格的拓展
- 单基准单元格
- 交叉单元格的拓展
- 飞鱼常见的潜在删数
- 双飞鱼
- 高级飞鱼
- 退化飞鱼
- 宫内飞鱼
- 交叉飞鱼
- 飞鱼和多米诺环
- 衰弱飞鱼
致命结构理论
- 匿名致命结构
- 反转致命结构
- 宇宙法 (GSP)
- 探长致命结构
- 唯一矩阵 (UM)
- 唯一性提示数覆盖 (UCC)
- 传递
- 淑芬致命结构 (QDP)
- 全强链死环和无解局面
- 秩理论里的致命结构
- 条件致命结构
附录
- 术语索引
- 数独文本格式
- 逻辑学基础
- 组合数学基础
- HoDoKu 参考
其他
- 作者介绍
- 版权声明
其他收录
之前自己摸索 + 网上看了不少零散的高级技巧 (鱼 wing 链 的简单形式等),然后昨天有题解不会,感觉是需要什么更高级的东西,就来加群。
然后发现群公告中网站中有更多我之前不会的技巧,打算学。顺眼看了下作者的B站有个巨长的数独视频教程。发现B站视频的顺序和文档网站的顺序不同,前者似乎更倾向于由浅入深和实用性排序,且作者说了不一定要全看。而网站中的顺序更倾向于按类别分类,更倾向于字典类工具。
我倾向于看网站版的,一来更喜欢看文档而非视频,二来我看这项目还经常更新文档内容,感觉更新。所以是否有一个关于线性学习的网站阅读顺序的导航?
资源2
- https://github.com/zhugelianglongming/sudoku
在线版: https://zhugelianglongming.gitbook.io/shu-du/
作者也用 obsidian,可以 obsidian 方式打开
其收录站点
- 博客
- 微信公众号
- 高端数独
- 聪明方格
- 独·数之道
- 今日数独
- 康思
- 三思
- 杀手数独
- 数独在线
- 数独 puzzle-sudoku.com
- 数独 sudoku.name
- 数独 Sudoku Game
- 数和
- 武士数独
- 异形数独
- 有一个数独
- Daily Killer Sudoku
- Fun With Puzzles
- Futoshiki
- Grandmaster Puzzles
- GridPuzzle
- Logic Masters Deutschland e.V.
- KenKen
- Killer Sudoku Online
- KrazyDad
- Simon Tatham's Portable Puzzle Collection
- Str8ts
- SUDOKU.HK
- Sudoku.com
- SudokuWiki.org
- Sudoku Kingdom
- SudokuPad
- Sudoku Puzzle
- variantsudoku.top
线性 - 基础方法
一、Singles
- Full house / Last digit (就是整行列宫的最后一个位置和数字)
- Hidden single (行列宫中只有一个位置可以填写该数字)
即: 摒除法: 一个数字进一堆区域中,只有一格满足 - Naked single (格子里只有一个数字可以填)
即: 唯余法:一格区域要填一堆数字,只有一个数字满足
二、Intersections (Locked Candidates)
有两种情况(中文名字叫做行列消除法,是最最直观和简单的数独求解方案)
- Pointing 的情况是,虽然行列中有多个选择,但因为每一宫只能出现一个,因而如果在特定宫没有其他位置可以填写该数字,那么这一行列的数字就锁定在了这一宫
即: 宫进一步限制行列 - Claiming 的情况和 Pointing 反过来,即使说在特定宫虽然有多个选择,但因为行或列中只有这个位置有,那么就锁定在了这一宫
即: 行进一步限制宫
三、数对
根据是消除自己格子的候选数还是其他格子的候选数可以分类两种逻辑推断:
- 第一种情况消除自己格子里的其他候选数,叫做 Hidden Subsets,也就是n个数字只能出现在n个格子中,那么这n个格子里不能再出现其他数字
- Hidden pair,当有两个数字只在行列宫特定的两个位置出现时,这个格子里的其他数字可以排除(n=2)
- Hidden triple,三个数字在三个格子的情况也是一样的(n=3)
- Hidden quadruple,四个数字的情况也可以做排除(n=4)
- 另一种情况是数对形成后,该数对所在的行列宫也不再能出现该数字,这种排除方法叫做 Naked Subsets,根据数对中数字的不同,有如下几种:
- Naked pair,是说在形成pair之后,这一pair所在的行列宫不能再出现这两个数字;
- Locked pair,有一些Pair出现的位置可能同时作用(行或列)和宫,这样在两个作用域都可以消除;
- Naked Triple,和pair的情况是一样的;
- Locked Triple,和pair的情况是一样的;
- Naked Quadruple,四个的情况只有Naked block,不会出现同时两个house(house就是行或列或宫);
以上三种方法均为数独求解的基础方法,很容易理解,这里不再给出案例
接下来是高级思路
线性 - 高级思路
鱼
鱼是一种 Single Digit Pattern,其大概逻辑就是每行每列只能有1个位置,也就是说可以锁定在这些行列形成的网格点中,那么其他位置就可以删除,下面是基础鱼的类型:
- Size 2: X-Wing (X-Wing is a fish and not a wing!):
比如说,在一行中只有两个位置可以出现该数字,而如果可以观察到两个这样的行,且列位置是对齐的,那么这两列中只有这两行可以出现该数字,其他位置的该数字可以删除(看下面的案例来理解) - Size 3: Swordfish (剑鱼):
X-wing是2个位置有两行两列,swordfish是三行三列(不过不一样的是,可以是三个或三个以下,也就是说网格点不一定全都有) - Size 4: Jellyfish (水母):四行四列
- Size 5: Squirmbag // Size 6: Whale // Size 7: Leviathan,都算是
lager basic fish,在实际中用不太上
下面是X-wing的案例,其思路可以行列倒换情况,可以填写的结果也是类似于X的样子,最后排除时同样进行颠倒

但实际情况下,鱼并不会那么整整齐齐,很多时候会从格子中多一点或歪一点,从而形成了一些变种,最经典的变种鱼是 Finned fish (有鳍鱼) / Sashimi fish (生鱼片),这种思路的变化都可以针对 X-wing、swordfish 和 jellyfish 等
- Finned Fish (有鳍鱼)
的含义是说,在形成鱼的方向上还多出来一个候选数字时被称作 鱼鳍 (Fin),这个时候鱼鳍和鱼共同影响的单元格可以被剔除
(下图是 X-wing 和 Swordfish 的例子,Jellyfish 同理)

- Sashimi Fish (生鱼片)
是说,带有鳍的鱼有时候看起来不太完整时,就被称为生鱼片(其实本质上就是一条有鳍鱼,只是看起来不是很完整但确实符合鱼的逻辑),因为鱼鳍的存在,使得原有不完整的鱼出现了一些新信息
(下图是 X-wing 和 Swordfish 的例子,Jellyfish 同理)

此外还存在一些复杂的鱼定式:
翼 (Wing)
Wing在本质上是链的定式,因而在这一部分不做过多的解释,在后面有案例和原理,其主要有3类:
- XY-wing(XY-chain的一种特化,在了解chain之后写笔记)
- XYZ-wing(XY-wing的高阶版本,本质上仍旧是chain)
- W-wing(本质上是Discontinuous Nice Loop)
链 (Chain)
链是在同一行列宫中,具有相同候选数的两个格子之间的关系。需要注意的是,链是针对于特定的行列宫出现的,有可能针对行不能形成链,但针对宫就可以;另外,链是依赖于一个或多个候选数而存在的,这个数字也是链的基本属性之一。
链具有强弱之分,强链是不能同时为假(如果A为假,则B为真,用=x=表示),弱链是不能同时为真(如果A为真,则B为假,用-x-表示);弱链的本质就是数独的基本规则,即任意两个格子之间的关系都是弱链,也就是说强链是特殊的弱链;此外,链是没有方向的,其逻辑判断可以是双向的,可以从A格子推断B,也可以从B格子推断A;
接下来是几个关于链的定式:
Remote pair,远程数对
只使用相同的双值格,因为是双值格,所以必定为强链接

X-chain(X链)
X链又可以叫做 Alternating Inference Chain(AIC,强弱交替链),不过要求是首尾都得是强链(即强弱强、强弱强弱强等);
在这样的结构下,可以形成漂亮的逻辑链条,即对于A=x=B-x-C=x=D而言,有A为假时,B一定为真,则C定为假,D为真(A不是x,B是x,C不是x,D是x);反过来也成立,D为假时,C真,B假,A真;也就是说,A和D之间必然会有一个为真,那么A和D的共同作用格子一定就不是这个数字;看下面这个例子

值得关注的是,当AIC链条数字相同且长度为3(格子数为4)时的解法称为 Turbot Fish(多宝鱼) 或 双强链,而根据不同的形态,多宝鱼又做了很多细致的划分和命名,但原理都是一样的(比如 摩天楼、双线风筝、空矩形 都是被命名的特殊多宝鱼)
Skyscraper,摩天楼
因为弱链水平,且强链垂直而得名

2-String kite(双线风筝)
首先是标准型态的双线风筝,是由AIC形成的类似风筝的结构(值得注意的是,强链是特殊的弱链,所以出现强强强也是正常的,不过在逻辑推断时需要写作强弱强,否则逻辑不通顺);


另一种形态叫做 Dual 2-string kite(双重双线风筝)
当在同一宫中,对于特定数字,只有两个位置可以填的时候,往往可以两个类似的双线风筝的结构,如图,这样得到的逻辑判断是可以同时三个黄色或三个粉色,他们的共同影响格正好是两个风筝所看到的,因而同样可以进行消除(强链是特殊的弱链,所以该结构中公用的强链是可以被看作弱链的)

Empty rectangle(ER),空矩形
首先是标准形态是说,在一个宫内,某个候选数字出现在了特定的行和特定的列中,这时剩下的4个不能填写该数字的格子构成了空矩形;同时需要找另外一行或列,其该数字只出现了两次,且其中一个数字与刚刚特定的行列相同(如下面的案例中蓝线的位置)
在一些案例中,空矩形并不一定要限制在固定的位置上,在只有两个候选格子的时候,其可以是不确定位置的(如右图),这种情况本质上就是 X-chain(或者叫 Turbot Fish多宝鱼)

在一些情况下,这个共轭的轴可能出现两条,这个情形叫做 Dual Empty Rectangle,这个时候可以多次消除

PS:空矩形的本质是上面提到的Mutant Fish(Finned Mutant X-Wing)或后面学习的Grouped Nice Loop
XY-chain
XY-Wing
XYZ-wing
Nice loop
Discontinuous Nice Loop
Continuous Nice Loops
Almost Locked Set (ALS)
Uniqueness
字典
技巧库,感谢 sodoku.com
https://sudoku.com/zh/shu-du-gui-ze/page/1
鱼
鱼这个技巧在早期,沿用的是台湾对这个技巧的称呼:链列。现在逐渐使用鱼的称呼代替了这个叫法
—— https://sudoku.kazusa.tech/full-marking-techniques/01-normal-fish
感觉这个叫法更直观
X-wing
https://sudoku.com/zh/shu-du-gui-ze/x-yi-jie-fa/
“X 翼”是一种高级数独解法,它是基于两个平行的行或列。您无需关注 3x3 宫,因为此策略不涉及到宫。
如果您看看这个例子,将会更容易理解这种解法。
我们来看看这两行。它们都有两个单元格包含笔记 4。由于 4 不能重复出现在同一行或同一列中,因此我们可以安全地假设 4 将被放在对角线上:位于浅蓝色单元格或深蓝色单元格中。
(图)
现在我们缩小来看看涉及到的列。由于 4 放在对角线上,那么这两列就都已经包含数字 4。这说明我们不能再在这两列填入 4。
因此,我们可以自信地将这两列中所有剩余笔记中的 4 删除。
4 2 4 (下面四个四形成 x-wing,可以把这四个四所在宫的其他4都可以删了)
4 --- 4
| |
4 --- 4
4 4用链的说法
这就是一个呈正方型的、强弱强弱回路
根据该链去除宫内剩余数字
Y-wing
“Y 翼”解法与“X 翼”类似,但它是基于三个角,而不是四个。
我们来看看这种解法的例子。
开始时,我们需要找到一个刚好有两条笔记的单元格。我们将这个单元格叫做“折点”。
然后,我们再找两个也有 2 条笔记的单元格。这些单元格(叫做“钳”)应该和“折点”位于同一行、同一列或同一宫中。每个“钳”中的两个数字之一应该与“折点”中的相同。两个“钳”中的另一个数字相同。
(图)
现在,我们来看看两个“钳”在哪里交叉。我们看到是在最下面一行中的单元格。如果这个单元格包含两个“钳”共享的笔记,那么我们可以将其排除。在这种情况下,应该是数字 4,因为两个“钳”中都有 4。
38 --- 48
| |
| |
43 --- 45 (把这里的4给删除了,因为 43-38-48 形成 Y 翼,左下和右上必有一4)剑鱼
https://sudoku.com/zh/shu-du-gui-ze/jian-yu/
“剑鱼”解法是一种高级数独策略,通常用于数独谜题的困难关卡用以排除候选数。“剑鱼”解法与“X 翼”类似,但使用的是三组单元格,而非两组。
为了更好地理解,我们来看一个例子。
6 是我们的“鱼数字”,第 1、6 和 9 行是定义域。数字 6 的候选单元格也在 3 列中完美对齐。因此,数字 6 的位置有两种选择。
(图)
要么是这里 (图) 要么这里 (图)
无论在哪里,那 3 个包含对齐列的域都说明 6 不可能在其中出现两次。因此,我们可以安全排除这些列的所有其他笔记中的 6。
221
摩天轮
个人
我个人的解题习惯
- 直观(Direct)
- 排除 (熟练度不高更倾向于全部标记后再找)
- 唯一余数 (熟练度不高更倾向于全部标记后再找)
- 局部标记(Partial-Marking,也叫局标)
- 简单检查,按数字 顺序
- 全部标记 (Full-Marking,也叫全标)
- 简单检查,剩
- 割补 (割补 宫 到 行/列,或反过来)
- 按位置找数对/数组
- 按列 顺序
(顺便找 显性/隐性 数对/数组)
(顺便找 列有无数字全在某宫) - 按行 顺序
(顺便找 显性/隐性 数对/数组)
(顺便看 行有无数字全在某宫) - 按宫 顺序
(顺便找 显性/隐性 数对/数组)
(顺便看 宫有无带行/列不含某数字的信息)
- 按列 顺序
- 找宫与 行/列 相交、找特殊结构
- 如宫带行/列信息
- ...
- 找两数格,有没有与他对应的另一格与其组成数对
(包括宫行列中是否有相同的两数格 (全局标)、包括重合的双强链 (全局标),可以验算一下是不是仅二情况) - 按数字都找一次链关系
- 通用方法结束 (一般很少走到这一步的)
- ...
分类