在前面各章,筆者介紹了3 × 3 × 3魔方(又稱「三階魔方」)和2 × 2 × 2魔方(又稱「二階魔方」)的還原攻略。由本章起,我們將把注意力轉向「高階魔方」(即四階或以上的魔方)。在本章,我們首先從總體看看「高階魔方」的結構(包括部件和區塊)及其各種操作。
魔方的「部件」是指其角塊、邊塊和中心塊。請先看看一個4 × 4 × 4魔方(即「四階魔方」)和一個7 × 7 × 7魔方(即「七階魔方」)的外形(註1):
從以上兩圖可見,「高階魔方」與「低階魔方」(即二階、三階魔方)有一些相同之處,即兩者都有八個角塊,而且凡是「奇數階魔方」(例如三階、五階、七階魔方),它的每一個面都有一個居於正中央的中心塊(以下稱為「正中中心塊」),可用來識別該面的顏色,而「偶數階魔方」(例如二階、四階、六階魔方)則沒有這個「正中中心塊」。但是,「高階魔方」與「低階魔方」有兩個不同之處。第一,「高階魔方」的邊塊數目比「低階魔方」多得多,例如「三階魔方」只有12個邊塊,而「四階魔方」則有24個邊塊,「七階魔方」更有60個邊塊。一般而言,「n階魔方」共有12(n − 2)個邊塊。第二,「高階魔方」的中心塊數目也比「低階魔方」多得多,中心塊是指位於魔方每個面內部、只含一個小面的方塊。例如「三階魔方」只有6個中心塊,而「四階魔方」則有24個中心塊,「七階魔方」更有150個中心塊。一般而言,「n階魔方」共有6(n − 2)2個中心塊。由此可以預見,隨著魔方的階提高,所需還原時間將成倍增長。
接著討論「高階魔方」各部件的命名法。由於「高階魔方」六個面和八個角塊的數目和位置與3 × 3 × 3魔方的完全一樣,我們可以沿用3 × 3 × 3魔方有關面和角塊的命名法。但對於邊塊和中心塊,我們要引入一套新的、適用於任意n (n > 3)的命名法(註2)。對於3 × 3 × 3魔方,我們可以僅用兩個字母來命名其邊塊,這兩個字母告訴我們某邊塊位於哪兩個面的交界處,例如「fr」便是指位於前面和右面交界處的那個邊塊。可是僅使用兩個字母,卻無法唯一確定「高階魔方」的每個邊塊,這是因為在「n階魔方」(n > 3)中,位於每條邊上的邊塊不只一個,而是有n − 2個。以「四階魔方」為例,「fr」這兩個字母便無法唯一確定位於前面和右面交界處的那兩個邊塊。為解決上述困難,我們首先為魔方上的每一條邊規定一個方向,如下圖所示(請注意在下圖中,所有平行的邊都有相同的方向):
接著我們便可以按每條邊的既定方向為該條邊上的邊塊排序,使每個邊塊獲得一個序號:1、2...n − 2,把這個序號加在代表那條邊的兩個字母後,便能唯一確定每個邊塊。下圖展示4 × 4 × 4魔方上18個邊塊的名稱(下圖沒有顯示的其餘6個邊塊的名稱也不難確定):
為了找出中心塊的命名法,我們首先回顧上面展示魔方每條邊方向的示意圖。如果把該圖上的箭頭看作水流方向,那麼容易觀察到,魔方的每個面上都有一個角可被看成水流的「源頭」。舉例說,在魔方的前面,位於「fru」位置的那個角便是該個面的「水流源頭」,如下圖所示:
現在如果我們把每個面上的「水流源頭」看作坐標原點,從「源頭」流出的兩條「水流」看作坐標軸,那麼該個面上的每個中心塊便可以用該個面的代表字母加上該個中心塊的坐標來命名。但如何確定哪條是第一坐標軸,哪條是第二坐標軸?我們可以這樣規定,當把坐標原點擺成朝向上方時,位於原點右面的是第一坐標軸,左面的是第二坐標軸,如下圖所示:
下圖展示4 × 4 × 4魔方前、右、上這三個面上各個中心塊的名稱(下圖也標出了這三個面的坐標軸,請注意位於「fru」位置的那個角是這三個面的坐標原點)(註3):
有關3 × 3 × 3魔方部件的其他定義,包括各個角塊、邊塊顏色配置的標示法、角塊扭轉和邊塊翻轉的定義,都可推廣應用於「高階魔方」,詳情請參閱《群論與魔方:魔方的基本概念》。特別地,我們把本來適用於3 × 3 × 3魔方每條邊上唯一那個邊塊的顏色配置標示法和翻轉定義推廣應用於「高階魔方」每條邊上的所有邊塊。
以上圖所示的7 × 7 × 7魔方為例,「fu」這條邊含有五個邊塊,從右到左依次命名為「fu1」、「fu2」、「fu3」、「fu4」和「fu5」,而顏色配置則應分別標示為「紅藍」、「藍紅」、「紅藍」、「藍紅」和「紅藍」。由此可知,「fu2」和「fu4」這兩個邊塊是翻轉的,而「fu1」、「fu3」和「fu5」這三個邊塊則是正常的。
在還原「高階魔方」的過程中,除了以單個部件作為處理對象外,有時我們是以魔方某個面上的整行作為處理對象。因此除了定義魔方的「部件」外,還須定義魔方的「區塊」,區塊是指由某些部件組成的集合。在以後各章中,我們將常常用到一種由魔方某一個面上某一行(包括縱行和橫行)全部中心塊組成的區塊,以下把這種區塊稱為「中心行」。容易計算,一個「n階魔方」(n > 3)應共有12(n − 2)個「中心行」。
「中心行」的命名方法可以建基於中心塊的名稱,由於「中心行」實質上是某個面上所有具有相同第一或第二坐標的中心塊組成的集合,這個集合中每個中心塊的坐標都必包含一個「固定坐標」和一個「可變坐標」,因此我們可以用「*」號代替這些中心塊名稱中的「可變坐標」,以此作為這個「中心行」的名稱。舉例說,在下圖所示的4 × 4 × 4魔方中,白色和紅色方框圍著的那兩個「中心行」所含中心塊的命稱分別具有「f*1」和「r1*」的形式,其中「1」是「固定坐標」,「*」則代表「可變坐標」,因此可以把這兩個「中心行」分別命名為「f*1」和「r1*」:
除了「中心行」外,我們還可以定義其他區塊,例如可以把魔方每個面上的所有中心塊看成區塊,每條邊上的所有邊塊也看成區塊,本章暫不討論這些區塊。在以後介紹「高階魔方」的還原攻略時,讀者將會看到這些區塊的重要用途。
跟「低階魔方」一樣,「高階魔方」的每個外表面和夾心層都可以旋轉,但由於「高階魔方」有多於一個夾心層,我們要為「高階魔方」的夾心層旋轉引入新的命名法。以下將沿用F、B、R、L、U、D這六個大寫字母代表六個外表面旋轉,並用這六個大寫字母加一個下標數字i來代表沿某個面向內數第i個夾心層的旋轉。舉例說,下圖便顯示對一個處於初始狀態的7 × 7 × 7魔方進行F22操作(即對沿前面向內數第2個夾心層順時針旋轉180°)的結果:
正如在3 × 3 × 3魔方中,某一個面的順時針旋轉等價於其對面的逆時針旋轉,「高階魔方」的夾心層旋轉也存在等價關係,例如容易看到對於7 × 7 × 7魔方而言,F2 = B4−1。
跟「低階魔方」一樣,我們也可以寫出「高階魔方」的每種基本操作的「循環式」,以方便研究這些操作對魔方各部件的影響。不過,由於「高階魔方」含有較多部件,其「循環式」也較為複雜。以7 × 7 × 7魔方為例,以下是F和F2的「循環式」:
F = | (fru1, frd2, fld1, flu2)(fr10, fd10, fl50, fu50)(fr20, fd20, fl40, fu40)(fr30, fd30, fl30, fu30)(fr40, fd40, fl20, fu20)(fr50, fd50, fl10, fu10)(f11, f51, f55, f15)(f12, f41, f54, f25)(f13, f31, f53, f35)(f14, f21, f52, f45)(f22, f42, f44, f24)(f23, f32, f43, f34) | (1) |
F2 = | (ru21, rd21, ld21, lu21)(r21, d21, l52, u52)(r22, d22, l42, u42)(r23, d23, l32, u32)(r24, d24, l22, u22)(r25, d25, l12, u12) | (2) |
上面雖然只提供兩個「循環式」,但已能反映兩大類魔方操作的特點。(1)反映外表面旋轉的特點,它由12個括弧組成,而且每個括弧都包含4個元素,其中第1個括弧代表前面4個角塊的旋轉,第2至第6個括弧代表前面20個邊塊的旋轉,第7至第12個括弧代表前面24個中心塊的旋轉(不包括「正中中心塊」,因為這個中心塊在這個旋轉下維持不動)。(2)則反映夾心層旋轉的特點,它由6個括弧組成,每個括弧同樣都包含4個元素,其中第1個括弧代表該夾心層中4個邊塊的旋轉,第2至第6個括弧代表該夾心層中20個中心塊的旋轉。容易看到其他外表面和夾心層旋轉也分別具有(1)和(2)的結構,並且可以把(1)和(2)推廣至一般情況。下表提供任意「n階魔方」(n > 3)各種操作的「循環式」(註4):
操作 | 循環式 |
---|---|
在以上公式中,i的取值範圍為:1 ≤ i ≤ n − 2。 j' = n − 1 − j; k' = n − 1 − k |
為簡化公式,上表採用了一些殊殊符號,例如用Fi代表F1 , ... Fn−2,用j'代表在「n階魔方」中與j「對稱」的那個數字,例如對「七階魔方」而言,由於F2 = B4−1,4是與2「對稱」的數字,而當n = 7時,我們有2' = 7 − 1 − 2 = 4)。此外,上表還使用「Π 」代表「連乘積」(在群論中,「循環式」的複合被視為一種乘法),這個符號的下標列明連乘積公式中變項的變異範圍,例如Π1 ≤ j ≤ 3(xj + 1)便代表(x1 + 1)(x2 + 1)(x3 + 1)。請注意在F等六個外表面旋轉公式中,由於中心塊有兩個坐標,而這兩個坐標都發生變異,所以這六條公式中的第三項都包含兩重「Π符號」。此外,在上述公式中,floor是「地板函數」(Floor Function),即floor(x)代表等於或小於x的最大整數,例如floor(7/2) = floor(3.5) = 3,floor(6/2) = floor(3) = 3。
表4詳盡列出了魔方各項操作對各部件的影響,不過在以後各章介紹「高階魔方」的還原攻略時,我們通常並不需要這樣細致地了解魔方操作對每個「部件」的影響,對我們更有用和更簡潔的資訊其實應是魔方操作對各個「區塊」(這裡指「中心行」)的影響。首先看外表面旋轉的情況,以(1)為例,如把該公式中有關「中心塊」的部分修改為「中心行」,便會得到以下比(1)簡潔的公式:
F = | (fru1, frd2, fld1, flu2)(fr10, fd10, fl50, fu50)(fr20, fd20, fl40, fu40)(fr30, fd30, fl30, fu30)(fr40, fd40, fl20, fu20)(fr50, fd50, fl10, fu10)(f1*, f*1, f5*, f*5)(f2*, f*2, f4*, f*4)(f3*, f*3) | (3) |
請注意上式中的最後一個括弧跟前面其他括弧不同,只包含兩個元素,這是「奇數階魔方」的特點,「偶數階魔方」不會出現這種情況。
其次看夾心層旋轉的情況。請注意夾心層旋轉對不同的「中心行」會產生兩種不同效果-「移動」和「截短」,即某些夾心層旋轉會把某些「中心行」移位,並把另外某些「中心行」截短。舉例說,F2會把7 × 7 × 7魔方上的「u*2」中心行移動到「r2*」位置,並會從u1*、u2*、u3*、u4*、u5*這幾個「中心行」分別截去u12、u22、u32、u42、u52這幾個中心塊,以下把由這些被截短的「中心行」組成的集合稱為「截短中心行集合」。因此,在列出某種魔方操作對「中心行」的影響時,必須分別列出該種操作的「循環式」和「截短中心行集合」。具備以上概念,我們便可以把前面的(2)改寫為以下形式:
F2的「循環式」: | (ru21, rd21, ld21, lu21)(r2*, d2*, l*2, u*2) | (4) |
F2的「截短中心行集合」: | {r*1\r21, r*2\r22, r*3\r23, r*4\r24, r*5\r25, d*1\d21, d*2\d22, d*3\d23, d*4\d24, d*5\d25, l1*\l12, l2*\l22, l3*\l32, l4*\l42, l5*\l52, u1*\u12, u2*\u22, u3*\u32, u4*\u42, u5*\u52} |
在上式中,「r*1\r21」代表被截去「r21」中心塊後剩下的「r*1」中心行,其餘類推。請注意這個標記法可以遞歸地使用,例如我們可以用「r*1\r21\r41」來代表被截去「r21」和「r41」中心塊後剩下的「r*1」中心行。由於每個「中心行」由n − 2個中心塊組成,一個「中心行」 截去n − 3個中心塊後,便等同於一個中心塊,不再成其為「中心行」,因此我們規定上述截短標記最多只能遞歸地使用n − 3次。舉例說,在7 × 7 × 7魔方上,我們有r*1\r21\r31\r41\r51 = r11,而「r*1\r11\r21\r31\r41\r51」則是沒有意義的。
與上節的情況一樣,我們可以把(3)和(4)推廣至一般情況。下表提供任意「n階魔方」(n > 3)各種操作的「循環式」和「截短中心行集合」:
操作 | 循環式 | 截短中心行集合 |
---|---|---|
(fru1, frd2, fld1, flu2)Π1 ≤ j ≤ n-2(frj0, fdj0, flj'0, fuj'0) Π1 ≤ j ≤ floor((n-2)/2)(fj*, f*j, fj'*, f*j')X, 其中X = e,若n為偶數;X = (fm*, f*m),若n為奇數 | ||
(bru2, blu1, bld2, brd1)Π1 ≤ j ≤ n-2(brj0, buj'0, blj'0, bdj0) Π1 ≤ j ≤ floor((n-2)/2)(bj*, b*j, bj'*, b*j')X, 其中X = e,若n為偶數;X = (bm*, b*m),若n為奇數 | ||
(fru2, bru1, brd2, frd1)Π1 ≤ j ≤ n-2(frj1, ruj'1, brj'1, rdj1) Π1 ≤ j ≤ floor((n-2)/2)(rj*, r*j, rj'*, r*j')X, 其中X = e,若n為偶數;X = (rm*, r*m),若n為奇數 | ||
(flu1, fld2, bld1, blu2)Π1 ≤ j ≤ n-2(flj1, ldj1, blj'1, luj'1) Π1 ≤ j ≤ floor((n-2)/2)(lj*, l*j, lj'*, l*j')X, 其中X = e,若n為偶數;X = (lm*, l*m),若n為奇數 | ||
(fru0, flu0, blu0, bru0)Π1 ≤ j ≤ n-2(fuj0, luj0, buj'0, ruj'0) Π1 ≤ j ≤ floor((n-2)/2)(uj*, u*j, uj'*, u*j')X, 其中X = e,若n為偶數;X = (um*, u*m),若n為奇數 | ||
(frd0, brd0, bld0, fld0)Π1 ≤ j ≤ n-2(fdj0, rdj'0, bdj'0, ldj0) Π1 ≤ j ≤ floor((n-2)/2)(dj*, d*j, dj'*, d*j')X, 其中X = e,若n為偶數;X = (dm*, d*m),若n為奇數 | ||
∪ {lj*\lji: 1 ≤ j ≤ n−2} ∪ {uj*\uji: 1 ≤ j ≤ n−2} |
||
∪ {b*j\bij: 1 ≤ j ≤ n−2} ∪ {dj*\dji: 1 ≤ j ≤ n−2} |
||
∪ {bj*\bji: 1 ≤ j ≤ n−2} ∪ {rj*\rji: 1 ≤ j ≤ n−2} |
||
在以上公式中,i的取值範圍為:1 ≤ i ≤ n − 2。 j' = n − 1 − j; k' = n − 1 − k; m = floor(n/2) |
請注意在上表中,六個外表面旋轉的「循環式」都包含一個變項X,這個X的值會隨著n的奇偶性而變化:當n是奇數時,X等於一個包含兩個元素的括弧;當n是偶數時,X等於e,即「恆等變換」,亦即「零括弧」。採用這個X,便可以用同一條公式概括「奇數階魔方」和「偶數階魔方」的不同情況。另請注意,由於六個外表面旋轉都不會截短任何「中心行」,所以這些旋轉的「截短中心行集合」都是「空集」,用「Φ」表示。
表5所列的「循環式」描述完整的「中心行」在各種操作下的動向,但在實際應用中,有時我們需要了解被截短了的「中心行」的動向,這時我們便要綜合運用表4和表5的資訊。舉例說,假如我們要追蹤7 × 7 × 7魔方上的「r*1\r21」在R下的動向,根據表5,我們知道R會把「r*1」中心行移到「r5*」;根據表4,我們亦知道R會把「r21」中心塊移到「r52」。綜合以上結果,我們得知R會把「r*1\r21」移到「r5*\r52」。