作者mikapauli (桜花)
看板Rubiks
标题[心得] 让完全新手参考用的2阶魔术方块解法
时间Mon Nov 25 20:00:22 2024
前言
起因是有完全没接触过魔术方块的新手,想从最简单的2阶魔术方块开始学起。
所以就用了我觉得最好理解的解法,写下这篇内容当做教材,
顺便贴上来和板友分享。虽然还没实际拿去教XD
也非常欢迎大家任何的意见交流,毕竟这教法可能还有不少改进空间。
第1步:2阶魔术方块的等价表示
对於2阶(2 ×2 ×2)魔术方块的相对两面,它们的转动是等价的。
因此可以选定8块方块中的1块方块为基准,将它放到後方,其他3面7块方块朝前,
之後只转动朝前的3面,如下图所示。
https://imgpoi.com/i/XRKIVD.png
以後都将像下图这样,把转动2阶魔术方块简化为7格方块在3条轨道上轮转。
https://imgpoi.com/i/XRKLAV.png
第2步:完成後方3格
当1块方块移动时,只要它没有透过不同轨道进出下图黑色的中央位置,
https://imgpoi.com/i/XRKFXE.png
那麽当它回到出发点时就会维持与一开始相同的方位;反之则可以旋转它。
因此已经排好的方块只要不进入中央位置,在需要避让时还是可以被移动一下。
透过这个原则便可以很容易完成下图黑色的後方3格,
https://imgpoi.com/i/XRKJIB.png
把正确位置在这里的方块移过来并转到正确方位。
第3步:移动前方4格
这里把已经完成的後方3格分别标示为x、y、z,
还没完成的前方4格分别标示为a、b、c、d,如下图所示。
https://imgpoi.com/i/XRK65G.png
遵循之前的原则,
首先要在不让x、y、z进入中央位置的条件下把a、b、c、d移到正确位置。
满足这个前提的转法有很多,最简单的像是:
1. x朝向z(往b)转1格;
https://imgpoi.com/i/XRKDC9.png
2. y朝向z(往a)转1格;
https://imgpoi.com/i/XRK2P5.png
3. x转回原位;
https://imgpoi.com/i/XRKMVM.png
4. y转回原位。
https://imgpoi.com/i/XRZ5A2.png
转完後a、b的位置互换,c、d的位置也互换。
这个转法之後可以用到,把它记为[z←x, z←y],
表示x先朝向z然後y朝向z转,之後也是先x後y复原。
因此[z←y, z←x]就是[z←x, z←y]的反转,
其他像[y←z, y←x]、[x←y, x←z]也都是这类转法,
其实活用它们就有办法解完2阶魔术方块了。
这篇文章里用中括号框起来所代表的转法最後x、y、z都会回到原位。
[z←x, z←y]对a、b、c、d的移动可以用轮换符号写成(ab)(cd)。
可以记忆为目的地z正下方的两格互换,旁边两格也互换,
同理[y←z, y←x]对应(ac)(bd),[x←y, x←z]对应(ad)(bc)。
数学物件:置换
由於开始用到了轮换符号,并且後面会使用置换运算来移动前方4格,
因此先花了一些篇幅在这边做个简单介绍,如果对置换熟悉的话可以先跳过这段。
一些元素位置掉换的动作被称为置换,
并且多个置换能藉由依序执行各自的移动结合成1个新的置换。
而像上面a、b、c、d所有的移动方式搭配置换的结合构成了4阶置换群S4。
置换能透过轮换符号来表示,例如(abcde)代表a←b←c←d←e←a这个移动,
并且(bcdea)、(cdeab)、(deabc)、(eabcd)也都等於是这个移动的写法;
而(aedcb)就是(abcde)的反置换,代表反过来的移动a→b→c→d→e→a。
(ab)这种2阶轮换代表2个元素交换,反置换就是(ab)本身。
另外像是置换(abc)、(bcd)的结合写成(abc)(bcd),先执行写在前面的移动。
S4总共有24个置换,包含:
空置换1个,(),代表没有任何移动,而像(a) = a←a这种也等於空置换
2阶轮换共6个,(ab)、(ac)、(ad)、(bc)、(bd)、(cd)
互斥2阶轮换的结合共3个,(ab)(cd)、(ac)(bd)、(ad)(bc),元素两两交换
3阶轮换共8个,(abc)、(abd)、(acb)、(acd)、(adb)、(adc)、(bcd)、(bdc)
4阶轮换共6个,(abcd)、(abdc)、(acbd)、(acdb)、(adbc)、(adcb)
显然S4中所有置换都能写成2阶轮换的结合,毕竟所有移动都能透过元素两两交换达成。
观察一些置换的结合,例如:
(ab)(abcd) = (a←b←a)(a←b←c←d←a) = b←c←d←b = (bcd)
(abcd)(ab) = (a←b←c←d←a)(a←b←a) = c←d←a←c = (cda) = (acd)
(cd)(abcd) = (cd)(cdab) = (dab) = (abd)
也能得到
(abcd)
= (ab)(bcd) = (ab)(bc)(cd)
= (acd)(ab) = (ad)(ac)(ab)
= (cd)(abd) = (cd)(bd)(ad)
但3阶轮换就无法组合出2阶轮换或4阶轮换,这点可以用3阶轮换属於偶置换,
而2阶轮换与4阶轮换属於奇置换来说明。再观察更多置换的结合:
(abcd)^2 = (a←b←c←d←a)(a←b←c←d←a) = (a←c←a)(b←d←b) = (ac)(bd)
(ac)(abcd) = (a←c←a)(a←b←c←d←a) = (a←b←a)(c←d←c) = (ab)(cd)
(abcd)(ac) = (a←b←c←d←a)(a←c←a) = (a←d←a)(b←c←b) = (ad)(bc)
可以得到像是 (ac) = (acbd)^2 (adcb) 之类的等式,
藉此能发现S4中的置换也都可以写成4阶轮换的结合。
最後下面这类4阶轮换与3阶轮换的结合之後也会用到:
(abc)(abcd) = (a←b←c←a)(a←b←c←d←a) = a←c←d←b←a = (acdb)
(abcd)(abc) = (a←b←c←d←a)(a←b←c←a) = a←c←b←d←a = (acbd)
第3步(续):移动前方4格
回到2阶魔术方块,
https://imgpoi.com/i/XRK65G.png
除了[z←x, z←y]、[y←z, y←x]、[x←y, x←z]这类转法,
另一种不让x、y、z进入中央位置的转法是:
1. x朝向y(往c)转1格;
https://imgpoi.com/i/XRZ9XD.png
2. y带着x朝向z(往a)转1格;
https://imgpoi.com/i/XRZGIV.png
3. 此时a、c、b、d便能随意转动,分别对应(acbd)、(acbd)^2 = (ab)(cd)、
(acbd)^3 = (adbc);
https://imgpoi.com/i/XRZB5E.png
4. 复原。
https://imgpoi.com/i/XRZACB.png
https://imgpoi.com/i/XRZRPG.png
这里把这个转法记为[y←x, z←y],表示一开始x先朝向y然後一起朝向z转,
预设如图中只在步骤3逆时针转1格,得到对应关系
[y←x, z←y]:(acbd)、[y←x, z←y]^2:(ab)(cd)、[y←x, z←y]^3:(adbc)
同理
[x←z, y←x]:(cbad)、[z←y, x←z]:(bacd)
这种转法很容易在途中看出对应的4阶轮换,可以不用特别去记忆。
或是用从中央出发的前2步移动判断第1转。
观察a、b、c、d从正确位置到目前位置的移动:
1. 若是(abc)这种3阶轮换,
顺着相同方向做1次4阶轮换如[y←x, z←y]^3:(adbc)变为4阶轮换(adcb)接3.,
方向相反也没关系就变为2阶轮换接2.;
2. 若是(ab)这种2阶轮换,
做1次[y←z, y←x]:(ac)(bd)变为4阶轮换(dacb)
或[x←y, x←z]:(ad)(bc)变为4阶轮换(cadb)接3.;
3. 若是(abcd)这种4阶轮换,做1次反置换[x←z, y←x]:(dcba)变为空置换;
4. 若是(ab)(cd)这种两两交换,做1次[z←x, z←y]:(ab)(cd)变为空置换。
这样移动前方4格就完成了。
第4步:旋转前方4格
此时a、b、c、d每1格处於
方向正确、逆时针方向自转1格、或顺时针方向自转1格3种状态之1。
观察转2次[z←x, z←y],此时a、b、c、d都没有移动,
但a、b原地逆时针转动了1格,c、d原地顺时针转动了1格,记为a+b+2c+2d。
可以使用与前面相同的记忆法:z正下方的两格往同一边转,旁边两格往另一边转。
a、b、c、d每1格的自转可以用3阶循环表示,分别构成3阶循环群C3,
共同记为pa+qb+rc+sd。
亦即逆时针方向转动2格等於顺时针方向转动1格,
顺时针方向转动2格等於逆时针方向转动1格,
而逆时针方向转动3格或顺时针方向转动3格便回到原方向。
因为循环群是交换群,所以处理起来会比较简单,只要把循环抵销就好不用在意先後。
另外由於转动2阶魔术方块时的不变性,没办法只单独旋转其中1块方块。
也就是在第3步魔术方块的所有状态为S4 ×C3 ×C3 ×C3,在第4步为C3 ×C3 ×C3。
观察a、b、c、d从正确方向到目前方向的自转,此时除了完全正确的情况,
其他的可能性只有:
1. 某3格往同方向自转,例如a+b+c,
随便选1个转法例如[z←x, z←y]^2:a+b+2c+2d,
[z←x, z←y]转2或4次变为2c+d接2.;
2. 某1格往逆时针转,另1格往顺时针转,例如a+2b,
选1个转法让这2格往反方向自转,例如[y←z, y←x]^2:a+2b+c+2d,
[y←z, y←x]转2或4次变为2a+b+c+2d接3.;
3. 某2格往逆时针转,另2格往顺时针转,例如a+b+2c+2d,
一直转对应的转法[z←x, z←y]^2:a+b+2c+2d就可以。
2阶魔术方块到这里便解完了!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.166.81.202 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Rubiks/M.1732536030.A.880.html
1F:推 Huntermagic: 撇开不是用目前通用的notation撰写比较难阅读,我觉 11/26 14:07
2F:→ Huntermagic: 得这是一个可理解但新手不算容易观察/学习的解法 11/26 14:07
3F:推 Huntermagic: 先P (permutation)後O (orientation)的解法在pattern 11/26 14:29
4F:→ Huntermagic: recognition上其实是比较不容易的,80年代的Nourse 11/26 14:29
5F:→ Huntermagic: method这样处理3x3第三层的角,但大部分更新更主流的 11/26 14:29
6F:→ Huntermagic: 解法几乎都是先O後P 11/26 14:29
观察的话我会以白(黑)绿橘块为基准,完成白绿、绿橘、橘白後剩下4块就用有白色、有
绿色、有橘色、只有红黄蓝来追踪。转动时也主要看白绿橘来判断顺逆时针,红黄蓝那块
就看後方3块朝前的那面。当然也可以直接推论。
7F:推 Huntermagic: 这个解法如果要再扩展,第一应该是开放把UBL角用顶层 11/26 14:48
8F:→ Huntermagic: 任一角取代,最後再adjust U face,再来就是第一步不 11/26 14:48
9F:→ Huntermagic: 做顶角只做底层三角,从L4C改成L5C,这方面可以变的 11/26 14:48
10F:→ Huntermagic: 就更多 11/26 14:48
11F:推 Huntermagic: 如果单纯考虑让新手能快速学会自己转出来,那其实精 11/26 14:51
12F:→ Huntermagic: 简的LBL应该已经足够简单 11/26 14:51
13F:→ mikapauli: 感谢建议!不过我对方块解法还了解得不多,这篇解法也 11/26 18:22
14F:→ mikapauli: 是我自己瞎想的,因为感觉流程很顺之後也一直在用。 11/26 18:22
15F:→ mikapauli: 也因此中间扩展那段不太清楚你的意思。就我的看法高阶 11/26 18:23
16F:→ mikapauli: 方块角块也是最难的,其他棱和面一块块搬就好,所以 11/26 18:23
17F:→ mikapauli: 感觉也没有扩展的需要? 11/26 18:23
18F:推 Huntermagic: 一般速解法里面高阶最後几乎都是降阶成3x3处理,所以 11/26 21:33
19F:→ Huntermagic: 角的做法基本不会脱离3x3的考量,并没有因为高阶特别 11/26 21:33
20F:→ Huntermagic: 困难 11/26 21:33
21F:→ Huntermagic: 降阶以5x5为例,就是把三块小边组成一个大块的边,每 11/26 21:38
22F:→ Huntermagic: 一面中间的9块小中心块拼成一块大块的中心,转变成3x 11/26 21:38
23F:→ Huntermagic: 3再解回来 11/26 21:38
25F:推 Huntermagic: 扩展那部分是说这个解法可以怎麽样更进阶更通用。以 11/26 22:03
26F:→ Huntermagic: 你有标号的第一张图为例,现阶段你的第一步是要靠自 11/26 22:03
27F:→ Huntermagic: 己直观转出xyz。今天我们可以容许不做z,改成将同样 11/26 22:03
28F:→ Huntermagic: 是顶层的a、b或d放在z的位置,接下来做完剩下四块後 11/26 22:03
29F:→ Huntermagic: 再将顶层转90或180度归位即可。这样你的第一步就会更 11/26 22:03
30F:→ Huntermagic: 灵活,在2x2的架构下会有很多步骤省略的机会。再来既 11/26 22:03
31F:→ Huntermagic: 然已经摸索得到一些换前方四角的公式,那一定也可以 11/26 22:03
32F:→ Huntermagic: 更灵活把z也加进去,这样第一步只需要做x和y就好(VOP 11/26 22:03
33F:→ Huntermagic: method就是这样,在底层做一个V,之後处理剩下的五 11/26 22:03
34F:→ Huntermagic: 个角,不过他是先O再P,也就是先处理方向再换位置) 11/26 22:03
35F:→ mikapauli: 了解!会先把这里的z做完除了看起来比较对称外,也是想 11/27 12:30
36F:→ mikapauli: 像上面说的让方块的移动和旋转更容易观察,或许这就是 11/27 12:32
37F:→ mikapauli: 先P再O的麻烦和限制吧XD 11/27 12:33
38F:推 Huntermagic: 不管是先O再P还是先P再O,後面的步骤为了不破坏前面 11/27 17:56
39F:→ Huntermagic: 做的东西,在转法上都会受到限制。只是在辨认方面,O 11/27 17:56
40F:→ Huntermagic: 可以只观察一种或一对颜色(2x2以顶面黄/底面白为例 11/27 17:56
41F:→ Huntermagic: ,只要看黄/白色块是否朝上/下就可知方向是否正确) 11/27 17:56
42F:→ Huntermagic: ,先O之後,P只要观察侧边颜色的排列花样即可简单辨 11/27 17:56
43F:→ Huntermagic: 认。在一般速解的情况下对人比较友善的观察其实是辨 11/27 17:56
44F:→ Huntermagic: 认颜色排列的花样,而不是去想实际零件之间应该跑的 11/27 17:56
45F:→ Huntermagic: 位置。 11/27 17:56
46F:→ Huntermagic: 所以先O再P的情况比较普遍,也比较实用。当然很多进 11/27 17:59
47F:→ Huntermagic: 阶解法在做的就是把OP一起处理,不只是观察难度增加 11/27 17:59
48F:→ Huntermagic: ,case/公式量也会大幅提升。 11/27 17:59
49F:推 rehearttw: 神奇的方法。想进到研究领域可以试试 11/28 08:37
※ 编辑: mikapauli (118.166.94.149 台湾), 11/28/2024 19:30:38