Alex Fung魔方解法學習記


我學了Alex Fung魔方解法(見Solving the Rubik's Cube Systematically,這是一種精確的數學法,且是一種思路,一個系統解決方案,一種原理,不用死記硬背公式。

這是一篇學習記,所有用到的算法動畫演示見原文Java Applet。整個過程我錄了視頻演示(詳見附錄一)。
 
魔方基礎的術語(如圖示,見 Background and Naming of the Parts):前Front后Back左Left右Right上Up下Down面,順(Clockwise,即我看着魔方的這一面順時針轉)逆(逆時針),本解法還用到中間層C,即左中右之中(C的方向隨R);還用到腰層M,上下之間的夾層(M的方向隨U)。固定三面朝我,三面看不見的式樣,左手轉前面Front(F面,我Fancy的左手),右手轉右面Right(R面,我Right的右手)。
 
 
Fung解法像個全集,本文的過程是一個子集:先底面再頂四角,頂三棱后棱對齊,中間層的棱和中間層的心。
Fung解法的整體思路是:先角后棱再中心,先轉位置再轉面。具體來說,(1)先底4角,再頂4角;(2)然后底三棱,頂三棱,最后頂和底兩棱,得到兩面正確;(3)中間層的棱;(4)最后中心。每一步驟都是先把那一塊轉到那個位置去(動作是move),先不管方向(orientation),然后再轉方向:角擰轉(twist),楞翻轉(flip)。
1)先底面
以黃底面為例,四條黃棱先轉到對面(我的魔方是紫色),再任意旋轉,使得棱的側面正確,例如黃藍塊,旋轉至藍色面,再轉回黃底。四角最后一招均使用CM1轉法(見 Moving Corners),這CM1操作是角操作的基礎。不能因為我太會轉齊一面了,就不用CM1,Fung解法是一個精確的數學樂高,CM1是基礎塊。

X•Y•X-1 是一個conjugate(參考Design Theory),X,Y為魔方的轉動操作,可以是單個操作或復合操作,但數學集合術語完全適用,例如X為F(左手順時針轉90度),X-1表示F-1(左手逆時針轉90度);•表示動作相連,可省略,寫在這里僅僅為了當動作為復合操作時,看起來清晰。

conjugate的特點是逆為中間的動作的逆:(X•Y•X-1)-1=X•Y-1•X-1

X•Y•X-1•Y-1是一個commutator,記為[X, Y],其特點是逆為兩個轉動操作相同但先后次序反之:(X•Y•X-1•Y-1)-1 = (Y•X•Y-1•X-1) = [Y, X]。

CM1包括左手和右手的操作,有CM1R,CM1R-1,CM1F,CM1F-1
CM1R = R-1•D-1•R        目標角在FRD,面朝右,右手操作。直覺:右手合,如圖示。
CM1F = F•D•F-1           與CM1R左右鏡像,左手合

CM1R-1 = (CM1R)-1=R-1•D•R     目標角在FRU,面朝左,右手操作,將其轉到FRD,面朝左。直覺:右手開。
CM1F-1 = F•D-1•F-1         與CM1R-1左右鏡像,左手開

 

 
 
   
轉完是常見的底面白色,側面T字。
 
2)再頂四角
轉位置轉面。轉位置用CM3R,轉面用CT2(CM3R和CT2見 Moving Corners)。

CM3R = [CM1R, U] = CM1R•U•CM1R-1•U-1  三角順時針輪換,僅改變三個角的位置,直覺:三角輪換

 
轉位置,有兩種情況:
(i)一邊兩角對換。頂面用R逆,先將一角轉正,剩下三角再對換,另兩角的正確沒意義,換句話說,三角輪換中包含有兩角相對位置正確。有時候,我一看就是一個天然的三角對換,其實我得承認,那是湊巧,我不用親自做“R逆”這一步了。
(ii)頂角對換,先用一次CM3R,將情況變成(i),再用一次CM3R。
 
關於轉面,例如轉黃面,有三種情況:
(i)兩角的黃色面一個朝前,一個朝后,那就按示例做CT2,先右手再左手。
(ii)如果兩角的黃色面同邊都朝右,也是CT2,但鏡像,先左手再右手。
(iii)如果對角黃色面朝上,另兩角不對,也是一個CT2,但是要轉180度。
重點是當操作成對時,后一個操作可以將前一個操作對其他塊的傷害復原。
有時,一個角朝向正確,剩下三個角朝向不對,拆作兩組CT2,但中間的那一塊在第一個CT2中要假裝它的朝向是配對的。
CT1 = CM1R -1•CM1F          目標角在FRU,面朝左,先右手CM1R -1將其轉到FRD,面朝左,再左手CM1F,轉到FRU,面朝上。直覺:右手開左手合。

CT1-1=CM1F-1•CM1R          與CT1左右鏡像

CT2 = [CT1, U] = CT1•U•CT1 -1•U -1    目標角位置正確,面朝向不對。成對的鏡像操作。僅改變兩個角的面朝向。直覺: 兩角翻面
 
CM3R和CT2是成功的秘訣,因為其他塊都不動。如果把魔方轉齊了,在一面嘗試CM3R和CT2,轉完了,發現除了目標塊(CM3R三塊、CT2兩塊)有變動,其他塊毫發無傷。
 
3)頂三棱后棱對齊
這一步轉對位置的同時,方向也是對的。
EM1BR和EM1BL是將側邊棱轉到頂的兩個基礎操作(見 Moving Edges Part I)。
當頂的一條棱調整時,直下的底的棱也變了(EM1BR變成頂棱,EM1BL是背后看不見的那條棱),於是變成底三棱。每轉一條棱,確保下面的棱是那個不對的棱,是個buffer,是我們不關注的buffer。

EM1BR = [F, M] = F•M•F-1•M-1      直覺:前腰回回

EM1BR-1 = [M, F] = M•F•M-1•F-1     直覺:腰前回回
EM1BL = [F-1, M2] = F-1•M2•F•M2     直覺:后腰腰回回

EM1BL-1 = [M2, F-1] =M2• F-1•M2•F   直覺:腰腰后回回

 
      
最后一步“上下兩條棱同時擰正”(見 Moving Edges Part II),這一步是所有步驟中的最難的,是個關卡。(我一開始偷偷用過左手鏡像操作。)
寫我的方法:目標底棱在頂面(底面朝左),目標頂棱在側面,用EM1BR。
F面的豎着的兩條棱在操作中不變,可在一開始找到符合EM1BR的那個棱,暫存於此處。若最后不幸下棱正確、上棱位置對朝向不對,三步糾正:1)將上棱用EM1BL擰下來,存於FR棱,2)再將下棱EM1BL擰到上棱,3)再用EM1BR。
若已經能轉齊六面,觀察EM1BR和EM1BL,觀察上下兩條棱在這兩個操作下去哪兒了,可有更多技巧。
 
這樣兩面整齊,將魔方像是三明治那樣立起來,我們來調整混亂的夾層。
 
4)中間層的棱和中間層的心
轉位置,有兩種情況:
(i)一棱位置正確,三棱輪換:三棱輪換EM3(見 Moving Edges Part II),當發現兩棱需對換的情況,先順轉90度(C),鉚定一個,剩下三棱輪換,原理同頂四角。
(ii)兩棱對角交換:兩次EM3。
 EM3 = [U 2, C -1] = U 2C -1U 2
 
此時看一下,如果中心不對,可以先轉中心。我遇到的情況都是兩對中心直線對換,NM4(見 Completing the Cube)。有一次我看到所有塊都好了,只有中心不對,Wow,但是NM4這個轉法,四兩撥千斤,too good to be true。 
 NM4 = [C, M 2] = C•M 2•C -1•M 2
棱轉面用EF2B(見 Moving Edges Part I):將兩個棱成對翻轉,用的是EM1BR和EM1BL兩個操作的正逆組合。
有兩種情況:
(i) 兩棱在同一面,顯然是直線相對的,不是像演示的,轉90度,而是轉180度。這種情況用一次EF2B。
(ii) 兩棱在對角線上,用兩次EF2B,第一次EF2B時,過渡的中間塊反而要擰反。
這個操作顯然是“王牌”了,如同穿過桃花島。我到了這最后一步重頭再來的情況不計其數,真是氣炸了。后來我口中念念有詞:一二三四五六七八(EF1B),一二三四五六七八(EF1B -1)。剛才先轉中心也只是為了不添迷惑,第一個八拍走完,亂相是每一面兩塊或三塊。

EF1B = EM1BR-1•EM1BL =  [M, F]•[F-1, M2] = (M•F•M-1•F-1)•(F-1•M2•F•M2)   直覺:腰前回回 前腰回回(一二三四五六七八)

EF1B-1 = EM1BL-1•EM1BR = [M2, F-1]•[F, M] = (M2•F-1•M2•F)•(F•M•F-1•M-1)    直覺:腰腰后回回 后腰腰回回(一二三四五六七八,“腰腰”算一步)
EF2B = [EF1B, U2] = EF1B•U2•EF1B-1•U2          第二個操作是:一個次序相反的EM1BL,接一個正常的EM1BR

 

 
Alex Fung說這個算法是他二十多年前寫成博客,文中說他十多年不轉魔方,一旦轉起來,照樣能轉好,不像記公式,一段時間不轉,就不會轉了。這句話直接說中我的痛處。經過了這些月,我深感這個方法的迷人實用。關於 Fung解法有反饋的話,請 寫郵件給他。
 
后來,我轉異形魔方,意識到Fung解法需要與經典解法結合(詳見附錄二)。
 
 
附錄一:Alex Fung魔方解法視頻

1)三階魔方視頻
Alex Fung魔方解法整體介紹、第一層十字架:0~2:10秒
第一層的角、基礎動作左手合、左手開、右手合、右手開:2:10~7:10秒
頂層三角輪換:7:10~11:50秒
頂層兩角換面:11:50~16:17秒
頂層四棱、前腰回回、后腰腰回回:16:17~22:26秒
中間層三棱輪換:另一個視頻
中間層中心對換:22:26~24:35秒
中間層兩棱換面:24:35~末尾

2)兩階魔方視頻

 

附錄二:Fung解法與經典解法的結合

Fung解法適用於其他異形魔方,例如二階、四階、鏡面等,但在五魔方中,中間層不能轉,若用上下層相對旋轉的方法,我還沒能嘗試。

經典的“先第一層、后第二層、再第三層”魔方解法中,關於第二層棱如何擰對,“魔方小站站長”使用“遠切回回、接孩子回家”算法,但新浪博主“震我一下魔方宅”將其拆解為兩個“上鈎下回”動作。

左手上鈎下回=(魔方上下顛倒后)右手合+底回  即,(經典)F-1•U-1•F•U=(Fung解法魔方上下顛倒后)R-1•D-1•R•D=[R-1, D-1]

右手上鈎下回=(魔方上下顛倒后)左手合+底回  即,(經典)R•U•R-1•U-1=(Fung解法魔方上下顛倒后) F•D•F-1F•D-1=[F, D]

故,第二層棱擰對的解法“遠切回回、接孩子回家”=(Fung解法中魔方上下顛倒后)遠+右手合+底回+左手合+底回。或,鏡面動作。

三階魔方“震我一下魔方宅”君調整頂層棱十字架以及位置也使用上鈎下回的動作組合。但五魔方的頂層調整棱的位置依然用到魔方小站站長教的“小魚一”和“小魚二”。

 

再有,三階粽子魔方很難。難點在於:
(1)亂且歪,其三階魔方的架構要齊平視野,看出橫平豎直的井字格。井字格的對准很費眼力,固有手勢的手感難以使出來,過程中扭曲尖銳丑陋的外觀讓人很不自信。
(2)雙色中心塊對應三階魔方的中心,其位置有方位性,比三階魔方嚴格,每走一步要加格外步驟校准。對齊第一層門檻很高。第一層先棱后角,需要逐塊謹慎處理。
(3)頂層十字架難以識別面向。
 
為了直覺上更好理解,以及解決五魔方、三階粽子魔方,我將Fung解法與經典解法結合,新的解決方案為:
1)第一層:Fung解法
2)第二層:棱用上鈎下回
3)第三層:先十字架,用上鈎下回;后十字架位置,用小魚;再角,用Fung解法。
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM