魔方总的变化数为
或者约等于4.3·1019。
三阶魔方总变化数的道理是这样:六个中心块定好朝向后,我们就不可以翻转魔方了,而他们也正好构成了一个坐标系,在这个坐标系里,8个角色块全排列8!,而每个角色块又有3种朝向,所以是8!*38,12个棱色块全排列每个有2种朝向是12!*212,这样相乘就是分子,而分母上3*2*2的意义是,保持其他色块不动,不可以单独改变一个角色块朝向,改变一个棱色块朝向,和单独交换一对棱色块或一对角色块的位置,也就是说,对于8个角块,7个角块朝向定好了,第8个角块朝向就定了,所以8个角块的朝向实际上只有37种可能性,12个棱块也类似,11个棱块的朝向确定了,第12个也就确定了,所以12个棱块的朝向只有211种可能性,另外呢,就是在角块和棱块的全排列8!*12!里(角块只能和角块交换,棱块只能和棱块交换,所以不是20!喔),有一半的可能性是不被允许的,也就是不可能由于魔方的正常旋转而达到的,至于这是为啥呢,请看下面分解。
第一个道理:为什么不能单独翻转一个棱色块。
想象我们对6个中心色块定好了我们喜爱的方向,我们就定好了一个坐标系,这个坐标系的原点就是魔方的体中心。坐标有明确的正负方向。我们可以看见魔方的每一个棱色块都是有一条棱的(这不废话么),对应于 水平、前后、竖直x,y,z三个轴,分别有4条棱和他们每一个平行,我们把这4条棱都标上一个箭头,指向正的方向。现在如果你有一个魔方可以这样做一下。我们现在想象空间中有了这样一个坐标系,和12个箭头。考虑任意面的旋转,(我这里不考虑3个中面的旋转,(因为,1,这样动了坐标系,2,中面的旋转可以等效两个侧面的旋转。),这时我们不考虑魔方,和魔方的花色,把他看成透明的,我们只考虑箭头,每次任意面旋转90度,我们都会让2个箭头改变方向(由正变负),我们只看结果,不考虑转的过程,不区分箭头哪来的。 翻转一个面90度是魔方的原子操作,他只能同时改变2个箭头的方向。所以我们最后不可能得到其他块不变只有1个箭头被翻转,也就是不可能只有一个棱色块被翻转。
第二个道理:为什么不能单独翻转一个角色块。
这个问题说起来,首先需要澄清角色块的方向是如何定义的。因为角色块会处在8个不同的位置,他的方向却只有3种,我怎么定义一个移动的坐标,又能准确标示出这3种方向变化呢? 我这里建议一种: 首先让你的视线穿过一个角色块的顶点和整个魔方的体中心,你会看到一个Y是不是?以你的视线为轴,这个角色块可以旋转,他有3个位置。如下:
0° | 120° | 240° |
试试转一个侧面,看看色块在新的位置朝向是怎样的?如果你转一个魔方的右侧面90度,你会发现最靠近你眼睛的那个角色块的朝向转过了120度(当然你坐标系的顶点变成了右后角,还是顶面朝上)。盯住这个色块,再转一下,他转到下面来了,为了仍然呈现一个Y,我们这时将魔方底面朝上,原来的右下角成为顶点,这时我们发现这个角色块又转回了0如此等等。重点是,你观察任何一面的90度旋转,4个角色块,他们的朝向 旋转过的角度总和 一定是360度的整数倍 ,准确的说就是120+240+240+120(这里我们假定把顶面和底面作为朝上的面)。 因为,转一个面是最小的原子操作,所以无论经过怎样多少步的操作,我们所有角色块角度变化和都是360*n,所以我们不可能只将一个色块旋转120度或者240,而让其他色块不变化,也因此我们证明了为什么不能单独翻转一个角色块。
第三个道理:为什么不能只对调一对色块。
首先我们考虑1234四个数的排列问题。1234变成4123,是所有数向右推移一位的变换。大家联想一下魔方,每转一个面90度,4个角,4个棱都是这种变换是吧。
1234变4123 我以后简称(1234),其实也好记,就是1 to 2,2 to 3, 3 to 4,4 to 1, 要是(1432)就是1到4,4到3,3到2,2到1,就是向左推移。
(1234)是由几个"交换两个数"的变换组成的呢。这里直接给出答案(1234)=(12)(13)(14),(12)的意思就是1到2,2到1。
具体说,我们看 1234变化的过程是这样:
-
(12) 2134
-
(13) 3124
-
(14) 4123
正好就是变换(1234)。 这样我们知道(1234)是经过奇数个交换得到的。
任何一个变换都可以由若干个两两交换得到。因为对于一个目标排列如2413,我怎么做呢, 这里面内在的道理就涉及群论的初步。这可能叫做循环群,我不确定,因为我没看过书。 1234全排列有4!=24个,而对1234的变换也有24种。他们构成一个群。
什么是群?
一个群就是有一堆元素。我们还需要一个运算 "*"。 他们满足:
- 封闭性:a和b是群里的元素,那么a*b也是。
- 存在元素e(其实就是类比乘法里的1)。a*e=e*a=a
- 每个元素a 都有唯一逆元a-1, a*a-1=a-1*a=e
- 结合律 (a*b)*c=a*(b*c)
好像很boring,我每次看都觉得,但是今天自己写一遍就不觉得。这里面,我是说这件bo不boring的事里面是有道理的。 需要指出的是通常群并不满足交换律。满足交换律的叫做abel群(等于什么都没说)。 为啥我说对1234的24个变换构成一个群呢。 我说的24个变换就是对应了1234的24种排列,每个变换就是把1234变到其中的一种排列所使用的变换。 对于这些变换的运算"*"就是做变换的先后顺序,a*b就是先做a再做b。
- 首先1234是一个排列,他对应了一种变换,就是不变,我用(1)来表示,他就是满足定义第二条的元素e。
- 封闭性,这是显然的,因为只有24种排列,和对应的变换,跑不出去。
- 逆元都是有的,就是把每步逆序然后取反,肯定都在这24个变换当中。
- 结合律看似挺麻烦,其实是显然的,因为(a*b)*c,a*(b*c)的意思都是先a再b再c。 这样他们构成了一个群,
so what?其实我现在也不好说构成了一个群就怎么样。我只是说我可以用群的一些性质。知道这个结构的一些特点了。也可以用分析群的一些视角,一些想法来分析这个系统。 首先我们看这24个变换。
- (1), 偶
- (12), (13), (14), (23), (24), (34), 奇
- (123),(132), (124),(142),(134),(143),(234),(243)偶
这是15个,还剩9个,如果不明白什么意思,看前面,我说一个(243)意思是2到4,4到3,3到2,他把1234的1不动,234三个数字轮换的向左推移一位变成1342。 还有显然的
- (1234),(1432),奇
- (14)(23), (13)(24),(12)(34)偶
还剩4个 他们是
- (13)(12)(24), (12)(14)(13), (14)(23)(12), (13)(24)(12) 奇
我们叫有奇数个 两两交换 组成的变换为奇变换,反之为偶变换,其实就是把群元素标出奇偶性。 我们看到两个奇变换运算得到偶变换,而两个偶变换运算永远得不到奇数变换。
这样偶变换事实上构成了一个子群。 也就是说他们做运算是封闭的。他们是
- (1), 偶
- (123),(132), (124),(142),(134),(143),(234),(243)偶
- (14)(23), (13)(24),(12)(34)偶
这12个元素构成了一个子群。 我好像想错了一些事情,呵呵。 不过前面写出的都是正确的。我可能以后会用到 回到为什么不能只对调一对色块。
为什么?因为一个原子操作,将一个面旋转90度,将4个角做了(1234)或(1432)是一个3个交换的奇变换,4个棱同样是3个交换的奇变换,这样他对所有的色块做的变换总的效果是一个偶变换。 所以对于所有色块的排列,我们能够达成的都是偶变换,而只对调一对色块是一个奇变换。不可能达成。 因此,我们证明了为什么不能只对调一对色块。
相关的问题(待发展)
(1)如果我翻转一个角色块一定使魔方不可解,那么我翻转2个会怎么样?
(2)同样的问题,我同时翻转两个棱色块会怎么样?
答案:
(1)2个角色块翻法有9种,其中有3种是可解的。什么样的3种是可解的?
是(0,0), (120,240), (240,120),其他6种组合一定不可解。 但是这里面还有一个问题,我只是说这3种组合是可能可解的,没说必可解。因为我现在只是说明了,总和为360度为可解的必要条件,并非充分条件,但是事实证明这三种就是必然可解的。证明我还没想的太清楚。
(2)同时翻任何两个棱色块都是可解的。 因为2个棱翻转有4种可能,00,11,01,10,既然01,10不可解,00可解,11是可能有解的,事实证明也是一定有解的。
感谢本站网友Cielo给我提供证明的方法,下面我简单复述一下。
00,当然有解,为什么11一定有解呢?可以这样证明,如果这两个被翻转的棱在同一个面上,我们就可以用高级玩法第二页的oll-39和oll-40,以及后面的pll的算法将其搞定,如果不在一个平面上,我们总可以用一步将其变到一个平面上,同样应用上面的过程,因为上面的过程相当于只是翻转了两个棱,而其他的色块都没有变动,所以最后加一步还原就行了。这样我们就证明了任意翻转两个棱,一定就可以还原。
同理对于上面第一个问题,(0,0), (120,240), (240,120)为什么一定可解?还是把被翻转的两个角凑到一个平面上,然后应用http://www.rubik.com.cn/fridrich2.htm 里的oll35-37算法,就可以将其翻转,然后再用刚才凑到一平面上的逆算法将其还原就ok了。
对于任意交换一对角或者一对棱,不可以还原,那么任意交换两对为什么就一定可以还原呢?
还是一样的道理,我们只需用几步准备算法把这几个要交换的棱色块变到一个面上,然后用pll算法将其交换,因为pll算法交换这些色块的同时,对其他色块一点影响也没有,所以我们就可以用 开始准备算法的逆算法还原回去,这样也就证明了任意交换两对色块,就是一定可以还原的。
至此我们终于完成了魔方总变化数的完整证明,充分而又必要:)