魔方和围棋一样,与其说是发明,不如说是发现,具有确定的数学模型(置换群),可以认为是数学的分支。
当然,魔方看起来比较简单,难度大致相当于,中学奥数题吧,我说的是简单复原,至于最优解,恐怕还是需要数学家帮忙。
大多数人玩魔方,大致是背公式,练手速,比赛竞速,也有玩盲拧,都很厉害。
前几天,忽然想到一个问题,零知识如何复原魔方,也就是不知道任何公式,怎么推导出那些公式?
初步的想法是编个小程序,用穷举法搜索出符合条件的公式
程序不长,几百行就够了,为此脑细胞估计又死了不少,终于写好了,运行了一下,6个操作的公式,几秒钟就搜索完了,设置的条件是,保持底下两层不变。
公式如下:
L'B'U'B UL
L'U'B'U BL
LFU F'U'L'
LUF U'F'L'
F'L'U'LUF
F'U'L'ULF
FRU R'U'F'
FUR U'R'F'
R'F'U'FUR
R'U'F'UFR
RBUB'U'R'
RUBU'B'R'
B'R'U'RUB
B'U'R'URB
BLUL'U'B'
BULU'L'B'
7个操作的公式,增加限制条件,保持顶层十字颜色不变,不要求棱位置正确。
几分钟可以搜索完,也就24个公式
L'U2 L U L'U L
R U'L'U R'U'L
L'U'L U'L'U2 L
R'U LU'R U L'
L U2 L'U'L U'L'
LU L'U L U2 L'
F'U2FUF'UF
BU'F'UB'U'F
就不一一列举了,公式大同小异
操作长度增加一个,时间大概增加50倍,所以,继续暴力搜索,时间代价有点大
所以,尝试用这些已经搜到的公式,看是否能完成复原
归纳总结了一下,长度为7的,大概有6个公式,每个公式能扩充成4个形式相同的公式,所以总数是24个
这些公式都能将相应的顶层小鱼形式转化成顶面完成,顶面完成后,顶面的状态只需要从顶层八个色块的侧面颜色来分辨,虽然状态数目已经不多,但仍然需要不同的公式来完成复原。
先棱后角吧,需要一个顶棱 三角换的公式,直觉告诉我,用这24个公式组合一下,应该可以找到顶棱 三角换的公式,因为偷看了一下顶棱 三角换的公式,公式长度是11个操作, 按我现在的程序来暴力搜索,恐怕需要时间50*50*50*50分钟,也就是大概4340天,所以不太现实。
也许是我运气好,随机组合了一下,忽然就发现了三棱换的公式,如下
L'U'LU'L'U2L FUF'UF U2F'
公式长度为14,虽然比标准公式长,但表现为基本公式的组合,也算是有助于记忆 。
接着只要找到三角换的公式,整个魔方复原就宣告完成
也许是好事多磨,两个公式的组合几乎穷尽了,并没有找到三角换的公式,继续尝试3组合,4组合,时间代价有点大,需要对着魔方试的次数有点多,或者改程序,都有点麻烦
组合过程中找到了只有5个色块未复原的状态,忽然想到可以对该状态施加三棱换公式操作,不就只剩下角块未复原? 然后看了一下四条棱的状态,居然不符合三棱换的条件
真是智商不在线,顶层转个角度,让顶层只有一条棱归位,另外三条棱就必然符合三棱换公式条件, 接下来就是例行公事,推导了一下,三角换的公式就有了
RUR'URU2R' F'UBU'FUB' U2 L'U'LU'L'U2L FUF'UF U2F'
它由四个基础公式组合而成,先形成5个色块未复原的状态,这是前面两个公式组合的结果,然后顶层转完一次继续实施三棱换操作,又是两个公式,所以公式长度大约是4*7 ,即28个操作
这也太夸张了,不过,在理论上,零知识,全部用自己找的公式来复原魔方的任务就算完成了
对这个三角换公式实在不满意
列出来,看能否化简
RUR'URU2R' F'UBU'FUB' U2 L'U'LU'L'U2L FUF'UF U2F' U'
F'UBU'FUB' =U L'UR U'LUR' U'
FUF'UF U2F'=U LUL'UL U2L' U'
代入
RUR'URU2R' U L'UR U'LUR' U' U2 L'U'LU'L'U2L U LUL'UL U2L' U'2
RUR'URU2R' U L'UR U'LUR' U L'U'LU'L'U2L U LUL'UL U2L' U2
化简这个公式,和直接搜索公式,看起来没有分别
幸运的是,三角换公式的长度是9, 暴力搜索是可行的
程序足足运行了一个星期,最后把这两个公式都搜到了
B2 R2 B' L' B R2 B' L B'
R B' R F2 R' B R F2 R2
至此,这道奥数题就算解决了。
既然是奥数题,数学内容的体现在哪里,可惜这方面我了解不深,大概说一说个人的理解吧
数学,在结构上被称为是域,定义了乘法和加法,满足封闭性,单位元,逆元,交换律,结合律等
魔方的数学模型,在结构上只符合群的定义, 也就是只定义了一种算法, 叫加法还是乘法你随意,满足结合律,封闭性,单位元,逆元等特征 。
魔方的操作或者叫运算,不符合交换律,所以不是阿贝尔群。
魔方公式的早期来源,应该不是暴力搜索来的,而是结合关于群的知识推导的
比如, 6个操作的公式, L'B'U'B UL
LBU是左上角涉及的三个面,上面公式的含义是,两个操作,一个是B',另一个是U',这个公式的中间部分'B'U'B U就是这两个操作的交换子,写成【B',U'】
在群论中所谓的两个元素a和b的交换子,是指元素aba'b'。因为一般来说操作的乘法不满足交换律(ab ≠ ba),所以aba'b'里面的a和a'、b和b'不能“两两相消”,故一般来说aba'b' ≠ 1。(对于一个群来说,所有形如aba'b'的交换子所生成的子群在某种意义上描述了该群的“可交换程度”。)
加上首尾的L' 和 L 这种扩展公式的方法叫共轭法。
所以公式 L'B'U'B UL,就是用L的共轭法扩展 B'和U'操作的交换子。
再比如, 公式 L'U2 L U L'U L
可以看成是 , L'U2 L U L'U' U2L , 也就是 LU2的共轭法扩展 L和U的交换子
三角换公式也不例外, B2 R2 B' L' B R2 B' L B' 看成是B2 R2 B' L' B R2 B' L B B2, 即B2共轭法扩展 【R2,B'L'B】
网上教程一大堆,这里也总结一下复原魔方的自认为简单的过程,大致有如下几步
1:要明白魔方的基本结构,魔方的中心块是不变的,棱块只有两面,角块有三面,复原之后,每个块都有自己的固定位置和方向,所以,拿到一个被打乱的魔方,选好参考面,随意指定一个块,要能明白这个块最终要被恢复到哪里去。
2:不需要公式,因为自由度很大,稍加摸索,就可以恢复一个面,这个面通常用来做底层,注意这个底层一定要是真的归位 ,也就是底层的四个棱块的前后左右面颜色要和魔方前后左右面的中心块颜色相同,四个角块的要求也是类似的
3:恢复中间层, 实际上最多只有4个棱块要恢复,可以摸索找到公式,也可以直接背公式,有两个公式,一个是顺时针前面取代,另一个是逆时针右面取代,目标棱块在右前位置。
所以这一步需要观察和选择公式,公式如下
URU'R' U'F'UF
U'F' UF URU'R'
4: 顶面十字,需要选择方位(略),重复使用这个公式,FRU R'U'F'
5:顶面颜色恢复,这一步我的做法是顶层U U'或U2变化重复使用公式, RU2 R'U'R U'R' ,直到顶面出现小鱼形状,然后分析小鱼的特征,选择相应的公式即可完成顶面颜色一致。
6:根据顶面色块的侧面颜色分布,决定使用棱先还是角先,看哪个方便就用哪个,棱先的话,先使用三棱换公式恢复棱块,然后大概率会剩下三个角块需要调整,再使用三角换公式即可
如果角先,则先使用三角换公式恢复角块,最后使用三棱换公式恢复棱块。
分析了一大堆,还是记不住公式,所以我很佩服那些不到十秒就复原魔方的牛人。