魔方是计算机科学史上最优雅的搜索问题之一——43 quintillion(4.3×10¹⁹)个状态,却能在最多 20 步内被解开。这个被称为"上帝之数"(God's Number)的结论,2010 年才被一组研究者借助相当于 35 个 CPU 年的算力证明。而把这个问题讲得最透彻、最赏心悦目的,莫过于 Sebastian Lague 的 Coding Adventure 系列。
2026 年 6 月 3 日,Lague 发布了《Coding Adventure: Improving my Rubik's Cube Solver》——这是他 5 月那期魔方视频的续集。续集的核心张力非常迷人:他用人类的直觉(CFOP 速拧法)去挑战算法的极致(IDA* 搜索 + 剪枝表),看谁能在更短的步数、更短的时间内把魔方还原。这不是炫技,而是一堂关于「状态空间搜索」「群论约减」「空间换时间」的实战大师课。无论你做不做魔方,视频里那套把指数级搜索压到可解的工程方法论,几乎可以原样迁移到你日常的路径规划、拼图求解、甚至 AI Agent 的任务规划里。两周 16.5 万播放,这就是高质量编程内容的号召力。
| 项目 | 内容 |
|---|---|
| 视频标题 | Coding Adventure: Improving my Rubik's Cube Solver |
| 频道 | Sebastian Lague(订阅约 300 万+) |
| 时长 | 约 40 分钟(长视频深度讲解) |
| 播放量 | 16.5 万(发布两周内,持续增长) |
| 发布日期 | 2026 年 6 月 3 日 |
| 前作 | Coding Adventure: Rubik's Cube(5 月 7 日,33 万播放) |
| 核心主题 | 用 CFOP、多米诺约减(Domino Reduction)、剪枝表改进魔方求解器 |
| 开源代码 | github.com/SebLague/Rubiks-Cube |
魔方之所以难,不是因为它规则复杂,而是因为它的状态空间大得反人类。一个标准三阶魔方的可达状态数是:
$$8! \times 3^7 \times 12! \times 2^{11} \div (2 \times 3 \times 2) \approx 4.3 \times 10^{19}$$
这个数字是什么概念?假如你每秒检查 100 万个状态,穷举完所有状态需要约 13.7 亿年——比宇宙年龄还长。这就是为什么"暴力搜索"在魔方面前毫无意义,你必须靠智能搜索。
但这里有个惊人的事实:任意打乱的魔方,最多只需要 20 步就能还原。这个上限叫 God's Number,2010 年由 Tomas Rokicki 等人用分布式计算证明(论文发表在 Symposium on Computational Geometry)。换句话说,最优解一定存在,而且很短——难点只在于"如何在合理时间内找到它"。Lague 的整个视频,就是在回答这一个工程问题。
我的延伸分析:这正是 NP 类问题的典型面貌——解的"验证"很容易(转 20 下看看对不对),但"寻找"极难。魔方、数独、推箱子、华容道,本质上都是同一族问题。
Lague 没有一上来就写算法,而是先认真听取了观众的"人类智慧"建议——也就是职业速拧选手用了几十年的 CFOP 法。CFOP 分四步,对应视频的前四个章节:
CFOP 的特点是:计算成本极低(查表即可),但解偏长——一次完整还原通常要 55–60 步,是 God's Number 的近三倍。人类世界纪录(约 3 秒多)就是靠 CFOP 拿下的,因为它适合人脑的"模式识别 + 肌肉记忆",而不适合追求最优。
视频原话方向:Lague 把 CFOP 实现成一个状态机,发现它几乎瞬间就能给出解,但解的长度让他不满意——这正是他转向算法路线的契机。
要逼近 God's Number,必须从"全空间"跳到"子空间"。视频后半段的核心是 多米诺约减,这个名字来自一个数学约束:只允许四个侧面(F/B/L/R)做 180° 转动,转起来就像多米诺骨牌只能翻两面。
为什么这个约束有用?它源自 Thistlethwaite 算法(1981)和后来的 Kociemba 两阶段算法的思想内核——群论约减:
每缩小一次允许的移动集,状态空间就指数级缩小。这就是"分而治之"在群论层面的实现——不是蛮力,而是用数学结构给搜索剪枝。
我的延伸分析:这是视频最容易被观众忽略、却最有迁移价值的一点。「约减」思想在工程里无处不在:把一个 NP-hard 问题分解成几个更小的子问题,每个子问题用不同的算法攻击。从编译器的语法分析阶段,到 SAT 求解器的 DPLL,思路同源。
进入阶段 2 后,问题变成"在这个受限子空间里找最短路径"。Lague 用的是 IDA*(Iterative Deepening A*,迭代加深 A*)。它的两个组成部分:
IDA* 相比 A* 的巨大优势是内存:A* 要把整个 frontier(开放集)存在内存里,对魔方这种状态空间,内存瞬间爆掉;IDA* 是深度优先的,内存只需 O(深度),几乎是常数级。
视频原话方向:Lague 会在
Iterative Deepening和IDA两个章节里,从零搭起这个搜索框架,并演示没有启发式时搜索如何"原地爆炸"。
光有 IDA* 还不够,真正让求解器在毫秒级出解的,是 剪枝表(Pruning Tables / Pattern Databases)。这是整个视频的工程高光:
思路是预计算:把魔方状态拆成几个独立的"坐标"——角块朝向(3⁷=2187 种)、棱块朝向(2¹¹=2048 种)、角块置换(8!=40320 种)、棱块置换(12!/2 种)……然后对每个坐标,预先算出"从该坐标到目标最少还要几步",存成一张查找表。
搜索时,每走到一个新状态,查表得到一个乐观的下界,直接喂给 IDA* 做剪枝。一张表往往能把搜索空间砍掉几个数量级。代价是空间换时间——这是计算机科学里最经典、也最划算的交易之一。
我的延伸分析:Pattern Database 是上世纪 90 年代解 15-puzzle、Rubik's Cube 时发明的技术,后来被广泛用在各种组合优化里。它本质上是一种「离线学习、在线推理」的工程范式——和你今天给大模型做 KV-cache、给推荐系统预训练 embedding,是同一种智慧。
视频的 Multi-Search 章节是高潮:Lague 把多条搜索路径并行/多次重启,在「解的长度」和「计算时间」之间找平衡点。最终的 Final Results 对比很说明问题:
这其实是工程界永恒的取舍:最优性(optimality)vs 速度(latency)vs 资源(cost)的三角。Lague 没有宣布谁是赢家,而是让观众看到这两个极端之间的连续光谱——你可以调参,在 25 步和 55 步之间任意取。
Raytracing?视频最后一个章节标题是 Raytracing?——这是 Lague 的招牌式悬念。熟悉他频道的人都知道,他做过光线追踪(Ray Tracing)、流体模拟、烟雾模拟。这个问号是在暗示:魔方求解器做完之后,他可能要把这套渲染管线用在新项目上。对一个内容创作者来说,这种"留钩子"的叙事手法本身就是值得学习的。
flowchart TD
SCRAM["🎲 打乱的魔方<br/>状态空间 ~4.3×10¹⁹<br/>God's Number = 20"]
SCRAM --> HUMAN["👤 人类路径:CFOP"]
SCRAM --> ALGO["🤖 算法路径:两阶段搜索"]
HUMAN --> C1["Cross 十字 (~8步)"]
C1 --> C2["F2L 前两层<br/>(41 种情况)"]
C2 --> C3["OLL 定向顶层<br/>(57 个公式)"]
C3 --> C4["PLL 置换顶层<br/>(21 个公式)"]
C4 --> SOLVED["✅ 还原<br/>解长 ~55步 / 毫秒级"]
ALGO --> P1["阶段1: Domino Reduction<br/>约减到子群 G1<br/>(群论剪枝)"]
P1 --> P2["阶段2: 在 G1 中求解"]
P2 --> IDA["IDA* 迭代加深搜索<br/>(内存友好)"]
PRUNE["💾 剪枝表 Pattern DB<br/>角/棱朝向+置换<br/>(空间换时间)"]
PRUNE -.启发式下界.-> IDA
IDA --> SOLVED2["✅ 还原<br/>解长 ~20-25步 / 较重算力"]
SOLVED --> TRADE["⚖️ 工程取舍<br/>最优性 ↔ 速度 ↔ 资源"]
SOLVED2 --> TRADE
这个视频表面讲魔方,骨子里是一套「如何驯服指数级搜索」的方法论。对普通开发者,我提炼出四条可直接落地的启发:
永远先选对状态表示。Lague 不是直接操作 54 个贴纸,而是把状态抽象成「角块朝向、棱块朝向、置换」这几个独立坐标。表示选对了,问题就简化了一大半。迁移到你的日常:在写搜索/匹配逻辑前,先花时间设计一个紧凑、正交的状态模型,比盲目堆 if-else 重要十倍。
空间换时间是最稳的性能杠杆。剪枝表用几十 MB 内存,换来几个数量级的提速。在你自己的系统里,问问自己:有没有可以预计算并缓存的"答案表"?热路径上的重复计算,常常能用一张 LUT(Look-Up Table)干掉。
用启发式给暴力搜索装上刹车。IDA* + admissible heuristic 的组合,是把"理论最优但不可行"变成"工程可行"的关键。下次你写 BFS/DFS 卡在状态爆炸时,先别加机器,先想想能不能算一个乐观下界来剪枝。
大问题用"约减"切成小问题。多米诺约减的本质是把群缩小、把搜索空间降维。在工程里,这就是分层架构、分阶段 pipeline、或者把一个大 NP 问题拆成几个容易的子问题分别求解。学会识别问题里的"数学结构",是区分普通工程师和优秀工程师的分水岭。
如果你正在做路径规划、游戏 AI、调度系统,或者只是想训练自己的算法直觉,把这个视频当作一次免费的 MIT 级别讲座来看,绝不亏。
Sebastian Lague 用一场「人类 CFOP vs 算法 IDA*」的对决,把状态空间搜索、群论约减和剪枝表这三大算法武器,讲成了 2026 年最值得程序员反复观看的一堂实战课。
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
