关于魔方的一些思考
在和同学的依次玩魔方过程中想到的有趣的问题。
规定:
- 旋转:将魔方某条边旋转 \(90^\circ\)。
- 角块、棱块:角块就是三色的那个,棱块就是棱上双色的那个。
- 变换:通过有限步的旋转的组合。
- 状态:可以理解成长得是否一样。如六个面复原是一个状态,拧一下之后就是另一个状态。
- 方案数:状态数。
魔方变换的性质
初始状态的魔方经过有限次变换,一定会复原(初始状态)。
因为魔方的状态数是有限的,所以不可能变换后一直出现新状态,所以至少会出现:

(\(s\) 是初始状态,\(A\) 是第一次回到的状态,线表示若干个变换,箭头表示变换的方向)
那我们取可以复原的那段应用到 \(s\) 上,

而黑线和绿圈都是由若干同一个变换得来的,但是变换后的状态应该是唯一的,故矛盾。
所以任意变换都应形如一个大环(不能是 \(\rho\) 型)回到初始状态。
计算变换周期
周期:计算初始状态的魔方经过 \(n\) 次同一变换第一次复原的 \(n\)。
整个魔方的复原,等价于每个块都恰好一起复原。
故我们可以先变换几次,计算每个块(棱块或角块)复原的次数(块的周期),所有块的周期的最小公倍数就是整个魔方复原的次数。
这个是 LRUD 层的规定。

比如计算这个变换的周期:R上 -> U左 -> L下 -> D右。
以正面为白,顶面为橙,右面为蓝色为例。
先计算角块的周期。
一次变换后,角块 \(白\textcolor{orange}{橙}\textcolor{blue}{蓝}、白\textcolor{orange}{橙}\textcolor{green}{绿}、白\textcolor{red}{红}\textcolor{green}{绿}、白\textcolor{red}{红}\textcolor{blue}{蓝}、黄\textcolor{red}{红}\textcolor{blue}{蓝}\) 均回到原位置,但是角度不对。如图。

相当于一次变换后,这 \(5\) 个角块,位置不变,而角度旋转一下。那么,旋转三下后复原。
故这 \(5\) 个角块周期为 \(3\)。
经过 \(3\) 次变换后,\(黄\textcolor{orange}{橙}\textcolor{green}{绿}\)、\(黄\textcolor{orange}{橙}\textcolor{blue}{蓝}\)、\(黄\textcolor{red}{红}\textcolor{green}{绿}\) 均回到原位置,但是角度不对。
相当于 \(3\) 次变换后,这 \(3\) 个角块,位置不变,而角度旋转一下。那么,旋转三下后复原。
故这 \(3\) 个角块周期为 \(3\times 3 = 9\)。
再计算棱块的周期。
经过 \(5\) 次变换,\(白\textcolor{blue}{蓝}、白\textcolor{green}{绿}、白\textcolor{orange}{橙}、白\textcolor{red}{红}、\textcolor{red}{红}\textcolor{blue}{蓝}\) 均回到原位置,所以周期为 \(5\)。如图。

经过 \(7\) 次变换,其他棱块同时复原,故周期为 \(7\)。
综上所述:该变换的周期为 \(3, 5, 7, 9\) 的最小公倍数,为 \(315\)。
同样地,读者可以练习 R上 -> U左 的周期,为 \(105\)。
普遍地,
把每个块设置一个点,每个点连向变换后的点,那么形成若干环。
但每个环的环长不一定就是周期,因为可能回到原位之后,角度不对,乘 \(3\) 之后才是答案。
那么我们可以拓展这个做法,把每个块 \(2\) 或 \(3\) 个面,每个面均当作一个点(若两个面颜色一样,都是不同的点),连向变换后的位置。
那么所有环长的最小公倍数就是变换的周期了!
魔方的方案数
规定六个面的中心不能变,即讨论的是把魔方所有棱块和角块拆下来,重新组装回去的方案数。
先不考虑能不能还原回去,那么 \(8\) 个角块随便排,是全排列 \(8!\)。排好后还有角度,每个角块可以有 \(3\) 种角度,所以为 \(3^{8}\)。
然后 \(12\) 个棱块,全排列 \(12!\)。每个棱块有 \(2\) 个角度,所以为 \(2^{12}\)。
所以魔方总方案数为 \(8!\times 3^{8}\times 12! \times 2^{12}=519,024,039,293,878,272,000\)。
那么更进一步,我们来计算可以复原的魔方的方案数。
直接计算非常困难,所以可以这么想。
我们都知道,拧一个角之后就不能还原,那么拧一个角之后再打乱也不能还原。拧没拧角,之后再旋转魔方,能得到的状态数是相同的。
其他都同理。
所以总方案数可以被这么划分。

整个矩形是总方案数,每个小矩形是经过不合法的操作(如拧角、拧边、或拧角+拧边)后,通过旋转能到的状态数。
每个小矩形的方案数都是一样的(上面已解释)。
所以我们计算有多少个小矩形(类),总方案数除以矩形个数(类),就是合法方案数。
我们不太好直接计算有多少类,但是我们知道,不论你怎么乱拧,我都可以复原前两层,所以只需要在顶面考虑就可以了。
先考虑顶面十字架的颜色。
这里的棱块指顶层的棱块。

我们知道这个情况,我们可以把相邻的棱块同时翻上去(操作 1)。
而这种情况翻不上去。

有操作 1,我们可以一直翻,直到只有至多一个棱块没翻上去,而且这个没翻上去的块可以通过操作 1 变成其他棱块没翻上去。
所以只有翻或不翻(能构成十字架或不能构成)\(2\) 种。
再考虑顶面十字架侧边的颜色。
我们会操作 2:

这个操作是 ④ 不动,其他的顺时针转。
我们同理可以看成 ①、②、③ 不动,④ 重新选一个位置插入。
如图。

所以可以通过操作 2,使得四个顶层棱块顺时针排成 \(\textcolor{blue}{蓝}\textcolor{orange}{橙}\textcolor{green}{绿}\textcolor{red}{红}\)。
所以我们一定可以把四个顶层棱块的顺序排对。
然后考虑顶层角块的颜色
我们会操作 3:

将左角块逆时针、右角块顺时针,同时往上翻(只考虑这两个块的黄色面是否翻上去,不考虑两个块交换了位置)。
通过操作 3,我们可以使得之多有一个角块黄色没有翻上去。
而且这个没翻上去的角块可以通过操作 3 转移成其他角块没有翻上去。
但是,顺时针或逆时针拧一个角是不同的两类。
因为由上面操作 3 的描述可知,经过若干次操作 3,所有顶层角块顺时针转动次数之和 = 逆时针转动次数之和。
而且,如果存在一个操作:把顺时针拧的角变成逆时针拧的角,而不产生其他影响(不影响其他黄面),那么我们不就会仅通过旋转来构成拧角变换吗,这显然是错误的。
所以顶层角块的颜色有 全部都翻上去了 / 有一个角逆时针拧了一下 / 有一个角逆时针拧了一下 共 \(3\) 种情况。
最后考虑顶角的位置。
我们会操作 4:

即控制一个角不动,其他三个角顺时针转。
也可以等价为其他三个角不动,另一个角换个位置插入。

于是我们一定可以通过操作 4,使得四个顶层角块的相对顺序是正确的。
我们现在只需要考虑四个顶角和四个顶棱的位置关系。
第一种是刚好全都对上了,算一种。
第二种是全体顺时针旋转一次:

这个大概是不能还原的,算一种。
第三种:

这个有对角公式,和第一种一样。
第四种是全体逆时针旋转一次:

通过对角公式,这个和第二种是一样的。
共 \(2\) 种!
综上所述,共有 \(2\times 1\times 3 \times 2 = 12\) 类。
所以合法魔方的方案数总共有 \(\dfrac{519,024,039,293,878,272,000}{12}=43,252,003,274,489,856,000\) 种。

浙公网安备 33010602011771号