yingmu 发表于 2017-8-31 10:43:21

N阶魔方的零公式复原法(JAVA版)

原帖转自:魔友liujunhua的帖子http://bbs.mf8-china.com/forum.php?mod=viewthread&tid=5254&highlight=N%BD%D7%C4%A7%B7%BD%B5%C4%C1%E3%B9%AB%CA%BD%B8%B4%D4%AD%B7%A8;下面是JAVA版利于魔友们学习理解;

N阶魔方的零公式复原法
刘俊华 2008-1-12

摘要:本文介绍了一种轮换N阶魔方同簇的三个块、改变同簇的两个块的色向的一种通用方法。无论这三个块同属于哪个簇,轮换的方法是一样的;无论这两个块同属于哪个簇,改变色向的方法是一样的。而且,轮换和改变色向的方法,也是一样的。这个方法不需要死记硬背,只需要理解。本文还介绍了如何排除簇间扰动。根据魔方的相关理论,在排除簇间扰动后,只要能在同簇间进行三轮换、能改变同簇的两个块的色向,就可以复原魔方了。所以,我把这个方法称为“N阶魔方的零公式复原法”。

本方法的优点:
1、不需要记忆任何公式,就可以复原N阶魔方。

本方法的缺点:
1、步骤比经过优化的公式稍长;
2、拧起来可能不是很顺手,有时需要转动内层;

我玩魔方只有两三个月时间,琢磨出这个玩法,给我启发最大的有如下几点:
1、http://www.mf8-china.com里面介绍的魔方理论知识;
2、http://www.rubik.com.cn里面介绍的最少记忆法和三阶魔方玩法;
3、http://www.mf100.org里面介绍的四阶、五阶魔方玩法;

本方法的基本原理:假设在N阶魔方的α 平面存在三个同簇的块,分别为A、B和C(这里先假设旋转α 平面时,A可以到达B和C的位置。不能到达的情况在后面讲述)。现在要求把A、B和C进行一次三轮换而不移动其他的块。我们如下操作:
1、先找到一个和α 平面平行的平面β;
2、再找一个和α、β平面都垂直的平面γ;
3、通过旋转α平面,A、B和C都可以到达γ平面;而当它们到达γ平面后,通过旋转γ平面,它们又可以到达β平面;
4、用如下的方**换A、B和C:
(γ β2 γ') α (γ β2 γ') α (γ β2 γ') α2 (γ β2 γ')…………(式一)

下面我举几个例子。

【例1】上图是三阶魔方的U面。现在要进行A→B→C→A的轮换。按照上面的方法,可以设α=U,β=D,γ=L,则轮换方法为:
(L D2 L') U (L D2 L') U (L D2 L') U2 (L D2 L')

  SupersetENG
  (L D2 L') U (L D2 L') U (L D2 L') U2 (L D2 L')

当然你也可以选择α=U,β=D,γ=R,则轮换方法为:
(R' D2 R) U (R' D2 R) U2 (R' D2 R) U (R' D2 R)

  SupersetENG
  (R' D2 R) U (R' D2 R) U2 (R' D2 R) U (R' D2 R)

如果要进行A→C→B→A的轮换,设α=U,β=D,γ=L,则轮换方法为:
(L D2 L') U2 (L D2 L') U' (L D2 L') U' (L D2 L')

  SupersetENG
  (L D2 L') U2 (L D2 L') U' (L D2 L') U' (L D2 L')

从上面的操作,可以看出:
1、对α平面的操作,在于你想移动哪个块,以及把这个块移动到哪个位置;
2、(γ β2 γ')总是被执行偶数次(因为是三轮换),这一点刚好保证了不移动无关的块。注意一下(γ β2 γ')的逆操作就是它自身。
3、γ平面的选择不唯一,但都可以达到目的。

下面再举个例子。

【例2】上图是三阶魔方的U面。现在要进行A→B→C→A的轮换。我们可以设α=U,β=MU(MU为U和D的夹层),γ=L,则轮换方法为:
(L MU2 L') U (L MU2 L') U (L MU2 L') U2 (L MU2 L')

  SupersetENG
  (L MU2 L') U (L MU2 L') U (L MU2 L') U2 (L MU2 L')

可以看出,轮换角块和轮换棱块的方法没有什么不同。

下面举一个双对换的例子。

【例3】上图是三阶魔方的U面。现在要进行A和B的交换、C和D的交换。我们可以设α=U,β=MU,γ=L,则对换方法为:
(L MU2 L') U (L MU2 L') U' (L MU2 L')…………交换A和B

  SupersetENG
  (L MU2 L') U (L MU2 L') U' (L MU2 L')

U2 (L MU2 L') U (L MU2 L') U' (L MU2 L') U2…………交换C和D

  SupersetENG
  U2 (L MU2 L') U (L MU2 L') U' (L MU2 L') U2
  (L MU2 L') U (L MU2 L') U' (L MU2 L')

这个例子中,(γ β2 γ')被执行了6次。

yingmu 发表于 2017-8-31 11:51:27

本帖最后由 yingmu 于 2017-8-31 20:53 编辑

下面讲如何改变块的色向。假设在N阶魔方的α 平面存在两个同簇的块,分别为A和B(这里先假设旋转α 平面时,A可以到达B的位置。不能到达的情况在后面讲述)。现在要求改变A和B的色向,而不移动其他的块。我们如下操作:
1、先找到一个和α 平面平行的平面β;
2、再找一个和α、β平面都垂直的平面γ;
3、再找一个和α、γ平面都垂直的平面δ;
4、通过旋转α平面,A和B都可以到达γ平面;而当它们到达γ平面后,通过旋转γ平面,它们又可以到达β平面;
5、通过旋转α平面,A和B都可以到达δ平面;而当它们到达δ平面后,通过旋转δ平面,它们又可以到达β平面;
6、可以用如下的方法改变A和B的色向:
(γ β2 γ') (δ' β2 δ) α (δ' β2 δ) (γ β2 γ') α'…………(式二)
可以看出,它和(式一)的唯一区别在于:在中间的两步操作中,用δ平面替换了γ平面。

下面举例说明。

【例4】上图是三阶魔方的U面。现在要求把A旋转120°,把B旋转-120°。我们可以设α=U,β=D,γ=L,δ=F,则操作方法为:
(L D2 L') (F' D2 F) U (F' D2 F) (L D2 L') U'

  SupersetENG
  (L D2 L') (F' D2 F) U (F' D2 F) (L D2 L') U'

如果要求把A旋转-120°,把B旋转120°,我们仍设α=U,β=D,γ=L,δ=F,则操作方法为:
(F' D2 F) (L D2 L') U (L D2 L') (F' D2 F) U'

  SupersetENG
  (F' D2 F) (L D2 L') U (L D2 L') (F' D2 F) U'

从上面可以看出:
1、对α平面的操作,是在选择要改变色向的块;
2、操作γ平面和δ平面的先后顺序,决定了色向改变的方向;
3、在δ平面的操作一定要是偶数次,这样才能不移动无关的块。

再举一个例子。

【例5】上图是三阶魔方的U面。现在要求改变A和B的色向。我们可以设α=U,β=MU,γ=L,δ=F,则操作方法为:
(L MU2 L') U' (F' MU2 F) U (F' MU2 F) U (L MU2 L') U'

  SupersetENG
  (L MU2 L') U' (F' MU2 F) U (F' MU2 F) U (L MU2 L') U'

既然轮换和调整色向用的方法是一样的,我们就可以同时进行轮换和改变色向的操作。下面举例说明。

【例6】上图是三阶魔方的U面。现在要求进行A→B→C→A的轮换,同时把A旋转120°,把C旋转-120°。我们可以设α=U,β=D,γ=L,δ=F,则操作方法为:
(L D2 L') U (F' D2 F) U (F' D2 F) U2 (L D2 L')

  SupersetENG
  (L D2 L') U (F' D2 F) U (F' D2 F) U2 (L D2 L')

这里要特别注意先操作哪个块。假设三个块中,不改变色向的块为X,而轮换的要求是用Y替代X,在应该先对Y进行操作。这是因为中间对δ平面的偶数次操作不改变色向。色向的改变发生在操作了γ平面后,接着操作δ平面,或者反之。

下面再举个例子。

【例7】上图是三阶魔方的U面。现在要求进行A→B→C→A的轮换,且改变把A和B的色向。我们可以设α=U,β=MU,γ=L,δ=F,则操作方法为:
U (L MU2 L') (F' MU2 F) U2 (F' MU2 F) U2 (L MU2 L') U'

  SupersetENG
  U (L MU2 L') (F' MU2 F) U2 (F' MU2 F) U2 (L MU2 L') U'

前面我们都假设了旋转α 平面时,A可以到达B和C的位置。下面讨论不能到达的情况。

【例8】上图是四阶魔方的U面。现在要求进行A→B→C→A的轮换。很清楚,无论如何旋转U面,A都不可能到达B和C的。要实现这个簇内轮换,必须改变A和C的色向。我们知道,四阶魔方的棱块在某个位置的色向是唯一的。这个例子中,当A→B和C→A时,A和C必然改变色向,而B→C时,B绝不会改变色向。我们可以设α=U,β=MU,γ=L,δ=F,则操作方法为:
(L MU2 L') U' (F' MU2 F) U2 (F' MU2 F) U' (L MU2 L')

  SupersetENG
   (L MU2 L') U' (F' MU2 F) U2 (F' MU2 F) U' (L MU2 L')

另外,这个例子还可以如下实现:通过改变B块的位置,这时A、B、C都处于MB平面,且通过旋转MB,A可以到达B和C的位置。这时,设α=MB,β=F,γ=D,可以实现A→B→C→A的轮换,轮换完毕后,再通过的逆操作来恢复。全部操作为:
(D F2 D') MB2 (D F2 D') MB' (D F2 D') MB' (D F2 D')

  SupersetENG
   (D F2 D') MB2 (D F2 D') MB' (D F2 D') MB' (D F2 D')

这个例子说明:当旋转α 平面,A不能到达B或者C时,可以:
1.用调整色向的方法,引入另一个δ平面的方式来协助完成;
2.通过某些操作调整A、B、C的位置,使它们都落在另一个平面ε中,而旋转这个ε平面,A可以到达B和C。当在ε平面完成A、B、C的轮换后,再用的逆操作来恢复。

yingmu 发表于 2017-8-31 11:54:27

本帖最后由 yingmu 于 2017-8-31 18:03 编辑

再举一个例子。
  
【例9】上图是四阶魔方的U面。现在要求从左图变换成右图。常常有人为四阶魔方可以互换一组对棱感到惊奇。其实,它是由两个三轮换组成的。第一个三轮换是A→D→B→A,互换后的图如下:

在上图的基础上,在进行第二个三轮换C→D→B→C,就得到最终结果。具体的操作方法在【例8】已经讲了,我就不重复了。

再举一个五阶魔方的例子。

【例10】如上图,要求完成五阶魔方中三个棱块的轮换,轮换要求如图中箭头所示。设左图中绿橙色棱块和蓝红色棱块所在的面为F面,红绿色棱块的绿色所在的面为U面。我们可以先用的操作,调整绿红色棱块的位置,然后设α=u,β=D,γ=B,来完成这三个棱块的轮换,最后用的逆操作来恢复,全部操作为:(小写的u表示顺时针旋转第二层)
(B D2 B') u (B D2 B') u (B D2 B') u2 (B D2 B')

  PirzerENG
   (B D2 B')MUU(B D2 B')MUU(B D2 B') MUU2 (B D2 B')

最后谈谈魔方中存在簇间扰动的情况。把魔方的某个面旋转90°,就会产生簇间扰动;反之,把存在簇间扰动的面旋转90°,就会消除簇间扰动。簇间扰动消除后,就可以用簇内三轮换和改变簇内色向的方法,把魔方最终复原。

下面举例说明。

【例11】上图是三阶魔方的U面。现在只要把A和B互换,C和D互换,魔方就最终复原了。A和B属于角簇,C和D属于棱簇,而N阶魔方基本的置换是簇内三轮换,很明显,角簇和棱簇间存在扰动。我们执行一个U操作(U'操作也可以)后,发现只要再做一个角簇的三轮换和一个棱簇的双对换,就可以复原魔方了。具体的操作步骤我在【例1】和【例3】已经讲了,我就不写了。

再举一个四阶魔方簇间扰动的例子。

【例12】如上图,要求翻转蓝黄色棱块,把魔方最终还原。这其实是要把两个蓝黄色棱块互换位置,即做一个簇内对换。而簇内的基本操作是三轮换,说明这里存在簇间扰动。假设黄色面为U,红色面为F。我们可以按如下操作进行:
1.先做一个MB'操作,消除簇间扰动;
2.复原U面的三个棱块;
3.复原因为MB'操作而移动的MB面的三个棱块;
4.复原因为MB'操作而移动八个心块(两个一组,共四组)。
有人要说了,第4步复原移动的四组心块是个簇内四轮换,不可能用簇内三轮换的操作来完成。其实,它不是簇内四轮换,而是簇内四轮换加上一个簇内二轮换,是可以用簇内三轮换的操作来完成的。这里要注意四阶魔方的4个心块是同色的,把它们分成两组,可以做一个簇内二轮换,而魔方的心块看起来没有改变。(顺便说一下,你可以在4个心块中任选三个,做一个簇内三轮换,而整个魔方看起来没有改变。我这里指非数字魔方。)
全部操作如下(分别对应上面的4步):
1.MB'

  SupersetENG
  MB'

2.(L MU2 L') U (F' MU2 F) U2 (F' MU2 F) U (L MU2 L')

  SupersetENG
  (L MU2 L') U (F' MU2 F) U2 (F' MU2 F) U (L MU2 L')
  MB'

3.(U F2 U') MB2 (U F2 U') MB' (U F2 U') MB' (U F2 U')

  SupersetENG
  (U F2 U') MB2 (U F2 U') MB' (U F2 U') MB' (U F2 U')
  MB'(L MU2 L') U (F' MU2 F) U2 (F' MU2 F) U (L MU2 L')

4.[(ML MR' F2 MR ML') MB']*4

  SupersetENG
  [(ML MR' F2 MR ML') MB']4
  MB'(L MU2 L') U (F' MU2 F) U2 (F' MU2 F) U (L MU2 L')(U F2 U') MB2 (U F2 U') MB' (U F2 U') MB' (U F2 U')

其中第2步,取α=U,β=MU,γ=L,δ=F;第3步,取α=MB,β=F,γ=U; 第4步,取α=MB,β=F,γ=ML+MR(表示两个心块同步作为一组参与轮换);第4步的*4,表示对[]中的操作重复4次。

再举一个例子,是两个不同的簇中的块同步轮换。

【例13】如上图,要求进行A→B→C→A的轮换和1→2→3→1的轮换。取α=U,β=D+MU,γ=L,操作方法如下:
(L D2 MU2 L') U (L D2 MU2 L') U (L D2 MU2 L') U2 (L D2 MU2 L')

  SupersetENG
  (L D2 MU2 L') U (L D2 MU2 L') U (L D2 MU2 L') U2 (L D2 MU2 L')
  (L D2 MU2 L') U (L D2 MU2 L') U (L D2 MU2 L') U2 (L D2 MU2 L')(L D2 MU2 L') U (L D2 MU2 L') U (L D2 MU2 L') U2 (L D2 MU2 L')

luckybox 发表于 2017-8-31 17:08:52

不明觉厉,:lol

折翼蚂蝗 发表于 2017-8-31 21:42:13

以前仔细研读过这个方法,感觉太繁琐,中层转动太多操作很不便。还是一般的降阶法容易点:lol

yingmu 发表于 2017-9-1 09:04:24

折翼蚂蝗 发表于 2017-8-31 21:42 static/image/common/back.gif
以前仔细研读过这个方法,感觉太繁琐,中层转动太多操作很不便。还是一般的降阶法容易点

是比较繁琐,但对于公式的理解会有益处,特别是教孩子玩魔方,这个应该比较好理解。

赵金浩 发表于 2017-9-1 13:59:19

yingmu 发表于 2017-9-1 09:04 static/image/common/back.gif
是比较繁琐,但对于公式的理解会有益处,特别是教孩子玩魔方,这个应该比较好理解。

我很喜欢玩魔方可是我只会拼一面

hmlx 发表于 2023-7-27 17:18:10

虽不明,但觉厉。
先找到一个和α 平面平行的平面β;再找一个和α、β平面都垂直的平面γ;
既然平行了,只要垂直一个,一定垂直另一个啊。
页: [1]
查看完整版本: N阶魔方的零公式复原法(JAVA版)