蓝柯小记 Notes 2026-10-21

三阶魔方:结构、记号与复原原理

益智 约 9 分钟

三阶魔方是 1974 年匈牙利人鲁比克(Ernő Rubik)做出来的,原本是给建筑系学生讲三维结构的教具,后来成了全世界卖得最多的玩具。它只有 26 个小块、六个面,能摆出的状态却超过 4.3×10¹⁹ 种——四千三百亿亿。

这个数字大到没什么实感,但它恰恰是理解魔方的入口:状态多到不可能靠"试"来解,所以魔方一定存在某种结构上的规律,而复原原理讲的就是这个规律。魔方不难,难的是它不给你留多少能动的余地。

这篇记三件事:它由什么拼起来、转动怎么记、以及所有复原公式背后其实是同一个套路。中间嵌了一个能转的魔方,读到记号那节可以直接上手。

26 个小块,只分三类

拆过魔方的人都有印象:外面看着是 27 个小方块,其实只有 26 个——正中心那个位置是空的,被六根轴的十字撑着。这 26 块按"露在外面的颜色数"分成三类,各归各位,一辈子不会串:

三类小块的身份约束
类型数量贴纸能去哪
中心块61 张钉在轴上,只原地自转,从不换位置
棱块122 张永远在棱上,只能在 12 条棱之间换
角块83 张永远在角上,只能在 8 个角之间换

这条约束是全部复原方法的地基:一个块长什么样,就决定了它能去哪。绿白棱块无论怎么转,都只可能在绿面和白面之间那条棱上,区别只是朝向对不对。所以复原不是"把 54 张贴纸一个个摆对",而是"给 20 个块各自找对位置、再摆正朝向"。

总数怎么算出来的:8 个角块有 8! 种排法、每个有 3 种朝向;12 个棱块有 12! 种排法、每个有 2 种朝向。乘起来再除掉那些"拆开才做得到"的情况(三个约束:角朝向和、棱朝向和、置换奇偶性),得到 8! × 3⁷ × 12! × 2¹⁰ ≈ 4.3×10¹⁹ 种。

顺带一个常被问的数字:上帝之数是 20。意思是任意一种打乱状态,都存在不超过 20 步的解法。这个结论 2010 年才被证明完,靠的是把状态分组后用了大约 35 CPU-年的算力穷举。20 步是理论下界,人类解法普遍在 50~100 步。

六个面与转动记号

魔方只有六个字母要记,全是英文首字母:U 上(Up)、D 下(Down)、L 左(Left)、R 右(Right)、F 前(Front)、B 后(Back)。

记号的规则只有三条:

  • 单个字母 = 这一层从该面外侧看顺时针转 90°。比如 R 是站在右边看进去、顺时针转右面一层。
  • 带一撇 = 逆时针:R'。带 2 = 转 180°:R2。
  • 面是按中心块认的,不是按你眼前看到的那一面。把魔方转个方向看,原来的右面跑到眼前了,它还是 R,不会变成 F。

第一条是新手最容易转反的地方,第三条是新手最容易搞混的地方。理解了第三条也就理解了为什么中心块重要——它是整个魔方里唯一不会挪窝的东西,六个面的"名字"就是它定义的。

记号讲完了,直接上手转两下最直观。下面这个魔方:拖动能换视角,下面两排按钮转的是魔方自己的层,转乱了点「复原」会一步一步倒着转回去。

用鼠标或手指拖着魔方能转视角;下面那两排按钮转的是魔方自己的层。

U 上(白) D 下(黄) L 左(橙) R 右(红) F 前(绿) B 后(蓝)

转一层
转视角
操作
示例
显示

步数 0 · 最近 —

当前状态(展开图,跟着转)

按钮分两类,别弄混:转一层动的是魔方,状态真的变了,展开图和步数跟着走;转视角只动镜头,魔方一个格子都没变。三个示例里,① 是 R U R' U' 连做六次(下一节会讲为什么正好六次),② 是复原顶层朝向用的小鱼公式,③ 每次随机。

建议先试这个 点「打乱」,然后盯展开图看:不管怎么乱,每个面的正中心那一格颜色永远不变——那就是这个面的名字。另外,每一面永远只有六种颜色里的格子,不会出现第七种。

复原到底在做什么

先把真正的矛盾摆出来:你每转一步,都会打乱已经做好的部分。底层十字刚拼好,一转 R 就散了。所以复原的要害根本不是"把某个块挪过去"——挪过去谁都会,难的是挪过去的同时其余 20 个块一个都不动。

于是复原方法的思路就只剩一条:找一个只影响你想动的那几块、其余一律不动的动作序列。而所有这类序列的构造方式,都是下一节那个套路。

主流入门方法叫层先法,一层一层往上收,七步走完:

层先法七步:每做完一步,剩下的自由度就少一点
步做什么此时还剩多少块没定
1底层十字(四个棱块围住底中心)还需要 4 角 + 4 中棱 + 顶层 8 块
2底层四个角归位中棱 4 + 顶层 8
3中层四个棱归位顶层 8
4顶层十字(只看朝向,不看位置)顶层 8(4 棱已定色)
5顶面全部朝上(OLL)顶层 8(颜色全对,位置待定)
6顶角归位顶棱 4
7顶棱归位(PLL)0

看这张表的关键不在背步骤,而在看自由度是怎么一步步被吃掉的:做完前两步,底层就"锁死"了,后面每一步都只能用不碰底层的公式;做到第 5 步,剩下的就只是"顶层八个块怎么摆",于是完全可以靠查表——顶层朝向 57 种情况、顶层位置 21 种情况,各背一条公式即可。

步数上:层先法一般 100 步以上;速拧主流的 CFOP(十字 + 前两层一起做 + OLL + PLL)能压到 55~60 步,代价是 OLL 57 条、PLL 21 条公式要背熟。方法之间的差异主要是"每一步允许自己动多少块",不是原理不同——原理是同一个。

公式的本质:做一遍,再撤一遍

这一节是整篇的核心。所有复原公式,从入门的三棱换到速拧用的 57 条 OLL,本质上都是同一个结构:

做一组动作 A,做一组动作 B,把 A 原样撤销,把 B 原样撤销——A B A' B'。

为什么这样能"只动少数块"?直觉很简单:被 A 碰过、但没被 B 碰到的那些块,在"做 A + 撤 A"里已经抵消了;被 B 碰过、没被 A 碰到的同理。只有同时被 A 和 B 影响到的那几块,才会留下净变化。数学上这叫交换子(commutator),魔方圈里的人不一定这么叫,但用的全是它。

页面上那个「① 上上下下 ×6」就是现成的例子:R U R' U' 正好是 A=R、B=U 的交换子。它只影响 R 面和 U 面交界处的那几个块,其余纹丝不动。反复做下去不会越转越乱,而是进入一个长度为 6 的循环——连做六次,魔方精确回到原状。这就是"上上下下"在魔方圈里被叫做 sexy move、又被当成万能过渡动作的原因:它破坏得少、还能自己绕回来。

从这个结构能直接推出三条实用的东西:

  • 公式可以推,不必死背。理解了"做一遍再撤一遍",自己也能凑出能用的序列,只是凑出来的通常比背的长。
  • 任何公式都能反着用。把序列倒过来、每一步都取逆,得到的就是它的逆操作。转错了不用从头来,倒着转回去就行——页面上的「复原」按钮干的就是这件事。
  • 背公式是为了快,不是因为不会推。速拧选手背的是"别人已经验证过最短的那条",省的是思考时间。

还有个结构值得知道:共轭 X Y X'。意思是"先摆个姿势 X,做完动作 Y,再把姿势撤掉"。魔方里大量公式是"交换子套共轭"——先用共轭把要处理的块挪到方便的位置,做完交换子,再原路退回去。理解了这两条,看任何一条长公式都能拆出结构,不再是一串要硬记的字母。

反过来也解释了为什么魔方"很难":4.3×10¹⁹ 种状态,人脑不可能搜索,只能靠这类结构把问题切成若干个小问题。所谓学会复原,就是学会这套切法。

页面这个魔方是怎么搭的

不是贴图假装立体,是真的 CSS 3D:transform-style: preserve-3d 加上 27 个小块(正中心那块省了,反正看不见),每块六个面——露在外面的贴彩色贴纸,朝里的全是黑塑料。所以从哪个角度看都是个实心方块,不会看穿。

状态只记两样东西:位置 [x,y,z](每根轴 -1 / 0 / 1)和朝向(一个 3×3 整数矩阵)。转一层就是这两个都左乘一个 90° 旋转矩阵。因为矩阵里全是整数,转一万次也不会歪半个像素——比用欧拉角累加省事太多。

动画这里有个坑值得记一笔:不能直接给小块的 transform 加过渡。CSS 插值是平移和旋转分开算的,角块会走直线而不是绕轴划弧,看着像穿模。做法是先建一个位于魔方中心的空容器,把要转的那 9 块临时挪进去,让容器绕轴转 90°,转完再把旋转量烘回每个小块自己的矩阵上,容器删掉。视觉上是整层一起绕轴转,状态上还是整数矩阵,两头都不亏。

展开图是反算出来的,没有第二份状态:对每个格位,找出现在占了它的小块,再看这个小块哪张贴纸正朝着外面,取那张贴纸的颜色。所以展开图和 3D 不可能对不上——它们是同一份数据的两种看法。

它不是求解器:页面上的「复原」只是把你做过的每一步倒着放一遍,不会解一个打乱的魔方。要真解,得用上一节的层先法或 CFOP。

留着的坑

  • 拖动只绕竖轴和横轴,不是真正的任意姿态(trackball)。够用,但转不出斜着看的那种刁钻角度。
  • 竖向视角卡在 ±90°:转过顶之后左右会反过来,索性不让过。
  • 拖到极端角度时魔方的投影会变大(体对角线立起来 + 透视近大远小),舞台高度是按最大投影留的,偶尔还是会伸出去一点,所以下方内容都垫了层级,不会被盖住。
  • 没有中层转(M / E / S)和整体转(x / y / z),标准公式里偶尔用到,目前只能拆成两层各转一次。
  • 贴纸颜色写死,没跟着深色模式调——魔方本来就该是这个颜色,改了反而认不出面。
  • 刷新即回到初始状态,没有本地存档。要的就是这个:一个点开就能玩、关掉不占东西的东西。
← 返回益智板块 回到首页 最后更新 2026-10-21