拧魔方,其实是在地图上找路

不背公式,电脑也能找到最快的复原方法。秘诀只有一个:把魔方变成一张地图。

前三步用二阶魔方(2×2)把道理讲清楚,第四步用同样的办法,真的把三阶魔方解开。

第一步

魔方的每一个样子,都是地图上的一个路口

中间这个魔方,就是你现在站着的路口。拧一下,它变成另一个样子,就等于走到了旁边的路口。

我们只拧顶层、右层、前层,每层可以顺时针、逆时针、或者转半圈。所以每个路口正好有 9 条路,通向周围这 9 个魔方。

点一点周围的小魔方,走过去看看。走着走着你会发现:路口太多了,很快就绕晕了。

点小魔方 = 走那条路 · 拖动可以转动视角
第二步

这张地图有多大?电脑从终点出发,一圈圈往外数

二阶魔方一共有 3,674,160 种样子,也就是 367 万个路口。每秒走一个,不吃不睡也要走 42 天。乱拧碰运气,基本回不了家。

电脑的办法像往水里丢一颗石子:从“复原”这个终点开始,拧 1 下能到的有 9 种,拧 2 下能到的有 54 种,3 下有 321 种……一圈一圈往外数,数到第 11 圈,367 万个路口全部数完。

所以:任何打乱的二阶魔方,最多 11 下就能复原。大部分落在第 9 圈,最外面第 11 圈的不到千分之一。

数学上,这种“路口 + 路”叫做“图”,一圈圈往外数叫做“广度优先搜索”。打开这个页面时,你的浏览器已经在后台把这 367 万个路口数了一遍。

第三步

回家:一直往数字小的路口走

数完之后,每个路口都贴上了一个数字:离复原还差几步。

现在回家就太简单了:看看身边 9 条路,选那条数字比自己小 1 的(绿色那条)走过去。再看,再走。数字变成 0,魔方就复原了。

这样走出来的一定是最短的路,因为每一步都让距离少 1,不可能更快。就像手机导航,每个路口都知道离家还有多远。

绿色 = 离家更近 · 灰色 = 一样远 · 红色 = 更远了
第四步

真正的三阶魔方:地图太大,就拆成四张小地图

三阶魔方大约有 4300 亿亿种样子,一张地图根本装不下,没法像二阶那样整张数一遍。

办法是分四段走,每段只完成一个小目标。而且越往后,能用的拧法越少(18 → 14 → 10 → 6 种),地图也就小到电脑能数完。像回家先上高速,再走主路,最后拐进小区。

每张小地图,电脑都像第二步那样一圈圈数过;走的时候照第三步,一路往数字小的地方走。四段接起来,任何打乱都能复原,一般 30 步左右。

魔方旁边那张圆圈图,是把 54 张贴纸摊平画出来的:每个点是一张贴纸,每一圈是一条轨道。拧一层,那几圈会亮起来,圈上的点就沿着轨道滑过去。打乱时颜色混在一起,复原时同色的点各自聚成一团。

每一段内都是最短的,但四段接起来不一定是全局最短:数学家已证明三阶魔方任何打乱最多 20 步就够,只是找那条路要难得多。这个分段方法叫 Thistlethwaite 算法。

魔方本身(可拖动)
54 张贴纸的圆圈图:点 = 贴纸,圈 = 轨道
U 顶 · D 底 · R 右 · L 左 · F 前 · B 后 · 带 ' 是逆时针 · 带 2 是转半圈 · 划掉的是这一段不准用的拧法
正在给四张小地图贴数字…

一句话总结

解魔方,就是在一张巨大的地图上找回家的路。地图小,就整张数一遍,一路往数字小的地方走(二阶);地图太大,就拆成几张小地图,一段一段走(三阶)。

想看数学版(节点、边、广度优先搜索的细节):进阶版 · 返回演示合集