群論與魔方:更高階魔方的還原攻略


在前面兩章,筆者介紹了5 × 5 × 5和4 × 4 × 4魔方的還原攻略。這兩種魔方可分別作為「奇數階魔方」和「偶數階魔方」的代表,而它們的還原攻略也正可分別推廣至一般的「奇數階魔方」和「偶數階魔方」。本章的主旨就是以前兩章的知識為基礎,介紹更高階魔方的還原攻略。由於「更高階魔方」包含無限種魔方,以下的介紹將主要以7 × 7 × 7魔方(亦稱「七階魔方」)和6 × 6 × 6魔方(亦稱「六階魔方」)作為代表。惟請注意,以下的介紹並不只適用於這兩種魔方,而是適用於所有更高階的魔方。以下兩圖以7 × 7 × 7和6 × 6 × 6魔方的紅色面展示這兩種魔方各個小面軌道的名稱及其「特徵數列」:



請注意在以上兩圖中,「02」和「06」雖然是兩個不同的小面軌道,但由於每個「02」小面都與一個「06」小面組成邊塊,所以所有「02-06」邊塊組成一個邊塊軌道。同理可知所有「01-09」邊塊也組成一個邊塊軌道。對7 × 7 × 7魔方而言,所有「12」邊塊(即「正中邊塊」)自成一個邊塊軌道。此外,每個「03」小面也與另外兩個「03」小面組成角塊,所以所有角塊組成一個角塊軌道。我們可以把上述情況推廣到一般高階魔方。與魔方每一條邊的中點有相等距離的所有邊塊(以下稱為「對稱邊塊」)組成一個邊塊軌道,與中點距離不相等的邊塊屬於不同軌道,而「奇數階魔方」的所有「正中邊塊」則自成一個軌道。此外,所有角塊也組成一個軌道。

更高階魔方的還原攻略基本上沿用前面介紹的5 × 5 × 5魔方還原攻略。對「偶數階魔方」而言,在進行第V步時可能還要應用4 × 4 × 4魔方還原攻略中的某些特殊方法,以處理「偶數階魔方」獨有的某些特殊情況。

第I步:搞定首四個面的中心區

筆者在前面介紹了用於這一步的兩種技巧-「先入後避法」和「先避後入法」,這兩種技巧同樣適用於更高階的魔方。不過當魔方的階數很高時,這個步驟會很費時間;而且要找出適當的中心塊以移入適當的位置,也已不是簡單的事,這時我們可以利用中心塊的「特徵數列」以幫助完成這個步驟。舉例說,假設我們正處理6 × 6 × 6魔方紅色面的某個「中心行」,只剩下一個中心塊尚未歸位,如下圖所示:

根據上圖,餘下一個未歸位的紅色中心塊的「特徵數列」是(2, 2, 3, 3),因此接下來我們應把注意力集中於「特徵數列」為(2, 2, 3, 3)的紅色小面上。找到一個這樣的小面後,便可設法把這個小面移入上圖中箭頭指著的位置。

另請注意,在還原「偶數階魔方」時,由於這類魔方沒有「正中中心塊」以識別各個面的顏色,在進行第I步時要注意各個面的相對顏色分佈。如果開始時搞錯了各個「中心區」的顏色,稍後便要把這些「中心區」的顏色重新排佈,從而帶來一些麻煩。

第II步:搞定其餘兩個面的中心區

筆者在前面介紹了用於這一步的「有借有償法」,此法同樣適用於更高階的魔方。不過,在條件許可的情況下,我們有時可以同時進行多個「借」與「償」的過程,這樣做可以加快還原魔方的進程。以下首先看一個「多行向一行借出中心塊」的例子,假設我們的7 × 7 × 7魔方現在餘下前面(即紅色面)和右面(即黃色面)的「中心區」尚未搞定,如下圖所示:

在上圖中,藍框行有兩個標有「+」號的黃色小面,我們要把這兩個黃色小面同時換為紅色小面。首先檢查「有借有償法」的兩個使用條件:(i)在把紅色面逆時針旋轉90°後兩個「+」號小面各自到達的另一個橫行上的位置(即兩個標有「&」號的位置)各有一個紅色小面,這兩個「&」號小面將會被「借出」;(ii)在黃色面上與兩個「+」號小面對應的位置(即兩個標有「#」號的位置)各有一個紅色小面,這兩個「#」號小面將作為「補償」之用。此外,上圖還包含一句口訣「逆-順-逆」,我們選擇這句口訣是因為從兩個「+」號小面移到兩個「&」號小面,我們要逆時針旋轉90°。接下來開始進行「有借有償法」。首先進行U1−1,並根據「逆-順-逆」口訣,逆時針旋轉黃色面90°,如下圖所示:

接著同時進行U2−1和D1,這樣做的結果是,兩個黃框行各把一個「&」號紅色小面「借」給藍框行,取代了藍框行上原來的兩個「+」號黃色小面,如下圖所示:

藍框行既已「借入」了兩個「&」號小面,便要把它送回原位,因此接著根據「逆-順-逆」口訣,我們順時針旋轉黃色面90°,並進行U1。這樣做的結果是,把藍框行送回原位,而兩個黃框行雖然各「借出」了一個「&」號紅色小面,但各獲得一個「#」號紅色小面以作為「補償」,如下圖所示:

兩個黃框行既已完成任務,便要把它們放回原位,所以接下來我們根據「逆-順-逆」口訣再次逆時針旋轉黃色面90°,並同時進行U2和D1−1,這樣便把兩個黃框行也送回原位,如下圖所示:

接下來看一個「一行向多行借出中心塊」的例子,假設我們的7 × 7 × 7魔方現在如下圖所示:

在上圖中,兩個藍框行各有一個標有「+」號的黃色小面,我們要把這兩個黃色小面同時換為紅色小面。首先檢查「有借有償法」的兩個使用條件:(i)在把紅色面順時針旋轉90°後兩個「+」號小面到達的另一個橫行上的位置(即兩個標有「&」號的位置)各有一個紅色小面,這兩個「&」號小面將會被「借出」;(ii)在黃色面上與兩個「+」號小面對應的位置(即兩個標有「#」號的位置)各有一個紅色小面,這兩個「#」號小面將作為「補償」之用。此外,上圖還包含一句口訣「順-逆-順」,我們選擇這句口訣是因為從兩個「+」號小面移到兩個「&」號小面,我們要順時針旋轉90°。接下來開始進行「有借有償法」。首先同時進行U1−1和D2,並根據「順-逆-順」口訣,順時針旋轉黃色面90°,如下圖所示:

接著進行U3−1,這樣做的結果是,黃框行把兩個「&」號紅色小面「借」給了兩個藍框行,取代了該兩個藍框行上原來的「+」號黃色小面,如下圖所示:

兩個藍框行既已「借入」了「&」號小面,便要把它們送回原位,因此接著根據「順-逆-順」口訣,我們逆時針旋轉黃色面90°,並同時進行U1和D2−1。這樣做的結果是,把兩個藍框行送回原位,而黃框行雖然「借出」了兩個「&」號紅色小面,但獲得兩個「#」號紅色小面以作為「補償」,如下圖所示:

黃框行既已完成任務,便要把它放回原位,所以接下來我們根據「順-逆-順」口訣再次順時針旋轉黃色面90°,並進行U3,這樣便把黃框行也送回原位,如下圖所示:

第III步:搞定首10條邊的邊區

在這一步,只要沿用前面介紹過的「先入後避法」和把整個「邊區」翻轉的技巧,便可順利搞定首10條邊的「邊區」。不過,隨著魔方的階數增加,這一步會變得很費時間。可以說,這一步主要是考驗我們的耐性,要用到的技巧不多。

第IV步:搞定其餘兩條邊的邊區

在這一步,我們要適當採用以下五條公式,其中頭四條公式適用於所有高階魔方。在這四條公式中,x的取值範圍一律為:1 ≤ x ≤ n − 2,但當n為奇數時,x不可以floor(n / 2)為值。另請注意,x' = n − 1 − x。第五條公式則只適用於「奇數階魔方」(這是因為「偶數階魔方」沒有「正中邊塊」),在這條公式中,m = floor(n / 2)。

單邊換位公式:Lx−1 U2 Lx−1 U2 F2 Lx−1 F2 Rx U2 Rx−1 U2 Lx2 = (fux1, bux1)(ux*, ux'*)(1)
雙邊換位公式:F2 Lx−1 F B−1 R2 F−1 B Rx Lx F B−1 R2 F−1 B Rx−1 F2 = (fux1, bux1)(fux'1, bux'1)(2)
單邊翻轉公式:Rx2 B2 U2 Lx U2 Rx−1 U2 Rx U2 F2 Rx F2 Lx−1 B2 Rx2 = (fux1, fux'1)(ux*, ux'*)(3)
雙邊翻轉公式:U−1 F R−1 U F−1 Rx−1 Lx F U−1 R F−1 U Rx Lx−1 = (fux1, fux'1)(bux1, bux'1)(4)
中邊翻轉公式:F U−1 R Fm R−1 U F−1 R U−1 Fm−1 U R−1 = (fum1)(bum1)(5)

正如5 × 5 × 5和4 × 4 × 4魔方的情況,上述五條公式必能滿足我們的需要,這是因為任意高階魔方滿足以下定理:

定理16對一個處於初始狀態的「n階魔方」任意扭動(包括外表面及夾心層旋轉)後,若某組(共n − 2個)同類邊塊全部齊集於某條邊上,則這些邊塊必然全都處於對稱狀態。

上述五條公式每次只能作用於一對或兩對邊塊,但有時我們可以把幾個邊塊當作一個區塊來處理,這樣便可使這些公式同時作用於多對邊塊,大大加快還原魔方的進程。以下讓我們看一些具體例子,請看下圖的7 × 7 × 7魔方:

在上圖展示的魔方中,「fu」邊上「fu3」邊塊的翻轉情況與「fu1」、「fu2」、「fu4」、「fu5」邊塊不同,但我們不能使用「中邊翻轉公式」(5),這是因為這條公式不僅會把「fu3」邊塊翻轉過來,而且會把不用翻轉的「bu3」邊塊也翻轉過來。因此,我們只能設法把「fu1」、「fu2」、「fu4」、「fu5」這四個邊塊翻轉。一個較慢的方法是使用「單邊翻轉公式」(3)兩次,第一次以1代入公式(3)中的變項x,這樣會把「fu1」和「fu5」邊塊翻轉過來;第二次則以2代入公式(3)中的變項x,這樣會把「fu2」和「fu4」邊塊翻轉過來。

另一個較快的方法則是把「fu1」和「fu2」邊塊看成一個區塊,這樣只須使用公式(3)一次,便可把要翻轉的四個邊塊翻轉過來。當然在使用公式(3)時,要記著我們是要移動整個區塊,即兩個邊塊一起移動,而非僅移動一個邊塊。換另一個角度看,這實際等於把公式(3)變成以下形式:

(R1R2)2 B2 U2 (L1L2) U2 (R1R2)−1 U2 (R1R2) U2 F2 (R1R2) F2 (L1L2)−1 B2 (R1R2)2 = (fu11, fu51)(fu21, fu41)(u1*, u5*)(u2*, u4*)

組成區塊的邊塊甚至可以是不連續的邊塊,請看下圖的6 × 6 × 6魔方:

在上圖展示的魔方中,「fu1」與「bu1」邊塊須對調位置,「fu3」與「bu3」邊塊也須對調位置。一個較慢的方法是使用「單邊換位公式」(1)兩次,第一次以1代入公式(1)中的變項x,這樣會把「fu1」與「bu1」邊塊對調位置;第二次則以3代入公式(1)中的變項x,這樣會把「fu3」與「bu3」邊塊對調位置。

另一個較快的方法則是把「fu1」和「fu3」這兩個不連續的邊塊看成一個區塊,並把「bu1」和「bu3」也看成一個區塊,這樣只須使用公式(1)一次,便可達致所需的換位效果,這實際等於把公式(1)變成以下形式:

(L1L3)−1 U2 (L1L3)−1 U2 F2 (L1L3)−1 F2 (R1R3) U2 (R1R3)−1 U2 (L1L3)2 = (fu11, bu11)(fu31, bu31)(u1*, u4*)(u2*, u3*)

惟請注意,對公式(1)-(4)而言,由邊塊組成的區塊不可以包含「正中邊塊」(當n為奇數時),這是因為「正中邊塊」的下標等於floor(n / 2),而這四條公式本來就不容許變項x取floor(n / 2)為值(當n為奇數時)。此外,這些區塊不可以包含對稱邊塊,請看下圖的7 × 7 × 7魔方:

在上圖展示的魔方中,「fu1」與「bu1」邊塊須對調位置,「fu2」與「bu2」邊塊須對調位置,「fu5」與「bu5」邊塊也須對調位置(註1)。請注意我們不能把「fu1」、「fu2」和「fu5」邊塊看成區塊並運用公式(1),這是因為「fu1」和「fu5」邊塊是對稱邊塊,因而有以下等價關係:R1 = L5−1,R5 = L1−1。如把「fu1」和「fu5」邊塊看成區塊,並且引入上述等價關係,就等於把公式(1)等號左端的算式變成以下形式:

(L1L5)−1 U2 (L1L5)−1 U2 F2 (L1L5)−1 F2 (L1L5)−1 U2 (L1L5) U2 (L1L5)2

讀者應能看到,上式與公式(1)等號左端的算式有很大差異;而讀者也不難自行驗證,上式根本不能達致公式(1)的效果,因此我們不可把「fu1」和「fu5」邊塊看成區塊。

要搞定上圖所示情況,我們可以首先以1代入「雙邊換位公式」(2)的變項x,從而使「fu1」與「bu1」邊塊對調位置,並使「fu5」與「bu5」邊塊也對調位置;然後以2代入「單邊換位公式」(1)的變項x,從而使「fu2」與「bu2」邊塊對調位置。另一個可行方法則是首先把「fu1」和「fu2」邊塊看成區塊,並運用「單邊換位公式」(1),從而使「fu1」與「bu1」邊塊對調位置,並使「fu2」與「bu2」邊塊也對調位置;然後以5代入公式(1)的變項x,從而使「fu5」與「bu5」邊塊對調位置。無論是採用上述哪一種方法,我們都不能僅靠使用某條公式一次來達致所需換位效果。

至於公式(5),它的使用條件則與上述情況恰恰相反。在使用公式(5)時,我們可以把「正中邊塊」與同一條邊上的其他邊塊組成區塊,這些邊塊可以不與「正中邊塊」毗鄰,但必須成雙出現,且為對稱邊塊。請看下圖的7 × 7 × 7魔方:

在上圖展示的魔方中,「fu2」和「fu4」邊塊的翻轉情況與「fu1」、「fu3」、「fu5」邊塊不同;同樣,「bu2」和「bu4」邊塊的翻轉情況也與「bu1」、「bu3」、「bu5」邊塊不同。要搞定上圖所示情況,我們有兩種方法。第一種方法是以2代入「雙邊翻轉公式」(4),從而使「fu2」、「fu4」、「bu2」、「bu4」這四個邊塊翻轉過來。第二種方法則是把「fu1」、「fu3」和「fu5」邊塊看成一個區塊,並把「bu1」、「bu3」和「bu5」邊塊也看成一個區塊(請注意「fu1」與「fu5」邊塊是對稱邊塊,「bu1」與「bu5」邊塊也是對稱邊塊),然後運用「中邊翻轉公式」(5),從而使「fu1」、「fu3」、「fu5」、「bu1」、「bu3」和「bu5」這六個邊塊翻轉過來。換另一個角度看,這實際等於把公式(5)變成以下形式:

F U−1 R (F1F3F5) R−1 U F−1 R U−1 (F1F3F5)−1 U R−1 = (fu11)(fu31)(fu51)(bu11)(bu31)(bu51)

第V步:使各個角塊和邊區歸位並朝向正確方向

這一步的總體原則是把高階魔方的「中心區」和「邊區」分別當作3 × 3 × 3魔方的中心塊和邊塊處理,並按照以前介紹過的3 × 3 × 3魔方還原攻略進行。大致而言,我們可以把3 × 3 × 3魔方還原攻略中的第一至三步應用於高階魔方而沒有任何改變,這三步的目標是:

第一步:搞定下面的四個邊區
第二步:搞定下面的四個角塊
第三步:搞定夾心層的四個邊區

對於其餘的步驟,則要對「奇數階魔方」和「偶數階魔方」區別對待,以下詳細介紹。

第四步:使上面的四個邊區正常

若撇除魔方的結構不論,從邏輯上說,在進行第四步前,魔方的上面可能有零個、一個、兩個、三個或全部四個「邊區」朝向正確方向。若出現零個、兩個或全部四個「邊區」朝向正確方向的情況,只須沿用3 × 3 × 3魔方還原攻略中的第四步的相同方法,便可順利完成本步驟。至於一個或三個「邊區」朝向正確方向的情況,則「奇數階魔方」和「偶數階魔方」各有不同的可能性。筆者在《群論與魔方:高階魔方的性質與公式》中曾指出,「高階魔方」滿足以下定理:

定理13對一個處於初始狀態的魔方任意扭動(包括外表面及夾心層旋轉)後,各個角塊的「扭轉數總和」在「模3加法」下等於0,屬於同一個軌道的各個邊塊的「翻轉數總和」在「模2加法」下等於0。

上述定理是造成「奇數階魔方」和「偶數階魔方」差異的根源。如前所述,「奇數階魔方」的所有「正中邊塊」自成一個軌道。如果在進行第四步前,魔方的上面出現一個或三個「邊區」朝向正確方向的情況,那麼「正中邊塊」的「軌道翻轉數總和」將等於3或1,這兩個數字在「模2加法」下都不等於0,違反「定理13」。因此,利用上述定理,我們可以推斷出「奇數階魔方」不可能出現一個或三個「邊區」朝向正確方向的情況。

可是,對「偶數階魔方」而言,情況卻不是這樣。如前所述,每一條邊上的對稱邊塊屬於同一個軌道,由於對稱邊塊必定成雙出現,而「偶數階魔方」又沒有「正中邊塊」,所以「偶數階魔方」任一條邊的「邊區」若出現翻轉,必然令每個「邊塊軌道翻轉數總和」同時加2。如果在進行第四步前,魔方的上面出現一個或三個「邊區」朝向正確方向的情況,那麼每個「邊塊軌道翻轉數總和」將等於6或2,這兩個數字在「模2加法」下都等於0,並不違反「定理13」。因此「偶數階魔方」是可能出現一個或三個「邊區」朝向正確方向的情況,例如下圖便展示6 × 6 × 6魔方可能出現的這兩種情況:

若出現上圖右面的情況(即有三個「邊區」朝向正確方向),那麼只要運用「單邊翻轉公式」(3)一次,把沒有朝向正確方向的那個「邊區」翻轉過來,即可完成本步驟。若出現上圖左面的情況(即只有一個「邊區」朝向正確方向),那麼我們可以隨意運用(3)一次,這樣做的目的是使魔方的上面化約為零個或兩個「邊區」朝向正確方向的情況。

最後必須指出,無論是「奇數階魔方」還是「偶數階魔方」,魔方上面出現零個、兩個或全部四個「邊區」朝向正確方向的情況都沒有違反「定理13」,這是因為在這些情況下,「正中邊塊」的「軌道翻轉數總和」等於4、2或0,而每個「非正中邊塊」的「軌道翻轉數總和」則等於8、4或0,上述這些數字在「模2加法」下都等於0。

第五步:使上面的四個邊區歸位

對「高階魔方」而言,這一步沒有甚麼特別,只要沿用3 × 3 × 3魔方還原攻略第五步的相同方法,便可順利完成本步驟。

第六步:使上面的四個角塊歸位

若撇除魔方的結構不論,從邏輯上說,在進行第六步前,魔方的上面如非全部四個角塊均已歸位,則可能出現以下四種情況:(i)只有一個角塊已歸位;(ii)只有兩個角塊已歸位,並且該兩個角塊在上面連成一條豎線或橫線;(iii)只有兩個角塊已歸位,並且該兩個角塊位於上面某條對角線上;(iv)沒有一個角塊歸位。若出現情況(i),只須沿用3 × 3 × 3魔方還原攻略中的第六步的相同方法,便可順利完成本步驟。若出現情況(iv),也可沿用3 × 3 × 3魔方還原攻略中的第六步的相同方法,把魔方化約為情況(i)、(ii)或(iii),或甚至使上面的四個角塊歸位。至於情況(ii)及(iii),則「奇數階魔方」和「偶數階魔方」各有不同的可能性。筆者在《群論與魔方:高階魔方的性質與公式》中證明了以下定理:

定理15:對「奇數階魔方」進行任意外表面旋轉及夾心層旋轉的複合結果都是偶排列。

據此,「奇數階魔方」不可能出現情況(ii)及(iii),這是因為這兩種情況等於把兩個角塊對調位置,而對調兩個角塊等於進行一次對換,屬於奇排列,違反上述定理。但由於上述定理對「偶數階魔方」不成立,「偶數階魔方」是可能出現情況(ii)及(iii),對這兩種情況我們可以沿用上一章介紹的方法:

在情況(ii)下,我們可以轉動整個魔方,使已歸位的兩個角塊分別位於「fru」和「bru」位置,接著先後運用「雙邊換位公式」(2)和「雙邊翻轉公式」(4),這樣做會重新打亂上面本已歸位的四個「邊區」,所以接下來要重做第五步,使上面的四個「邊區」歸位。重做第五步後,我們便會發現魔方的上面出現只有一個角塊歸位的情況,即化約為情況(i),這樣只要繼續照上述情況(i)的辦法處理便可完成這一步。

在情況(iii)下,我們可以轉動整個魔方,使其中一個已歸位的角塊位於「fru」位置,進行以下操作(即《群論與魔方:Dan Knights攻略解析(下)》中的公式(14))一次後,便會發覺魔方的上面變成有兩個角塊已歸位,並且該兩個角塊在上面連成一條豎線或橫線,即化約為情況(ii),這樣只要繼續照上述情況(ii)的辦法處理便可完成這一步。

URU−1L−1UR−1U−1L = (flu1, bru1, blu1)     (6)

至於上述方法的原理,筆者在上一章的解釋其實適用於一般的「偶數階魔方」。舉例說,上一章用到的一些「俯視圖」,例如以下這幅,便適用於一般的「偶數階魔方」:

請注意在上圖中,以紅色字標出的「橙藍」、「黃藍」等代表「邊區」,可以包含任意偶數個「橙藍」、「黃藍」邊塊等。

第七步:使上面的四個角塊正常

對「高階魔方」而言,這一步沒有甚麼特別,只要沿用3 × 3 × 3魔方還原攻略第七步的相同方法,便可順利完成本步驟。

註1:在上圖中,我們不能把「fu3」與「bu3」邊塊對調位置,並把「fu4」與「bu4」邊塊對調位置,這是因為「fu3」與「bu3」邊塊是「正中邊塊」,而我們根本沒有把「正中邊塊」對調位置的公式。


返回數學專題
<!-- text below generated by server. PLEASE REMOVE --><!-- Counter/Statistics data collection code --><script language="JavaScript" src="http://l.yimg.com/d/lib/smb/js/hosting/cp/js_source/whv2_001.js"></script><script language="javascript">geovisit();</script><noscript><img src="http://visit.webhosting.yahoo.com/visit.gif?us1490898813" alt="setstats" border="0" width="1" height="1"></noscript><script type="text/javascript">(function (d, w) {var x = d.getElementsByTagName('SCRIPT')[0];var f = function () {var s = d.createElement('SCRIPT');s.type = 'text/javascript';s.async = true;s.src = "//np.lexity.com/embed/YW/be0aa169de7f441c6473361be62c9ef6?id=ddad453e7753";x.parentNode.insertBefore(s, x);};w.attachEvent ? w.attachEvent('onload',f) :w.addEventListener('load',f,false);}(document, window));</script>