群論與魔方:超級魔方還原的補充說明(下)


在本章,筆者將討論「超級魔方」還原過程中的若干個特點。在以下討論中,筆者會不時提到還原「超級魔方」的各個步驟(包括第I、IIa、IIb、III、IV、V和VI步,其中第IIb步和第V步又細分為若干小步),並假設讀者已熟悉這些步驟的運用。讀者如有需要,請參閱前面各章對這些步驟的說明。

奇數階超級魔方正中中心塊的位置和方向

在還原「奇數階超級魔方」的第I至IIb步中,我們嘗試使魔方六個面的中心區還原,一種十分自然的做法是把六個面的所有中心塊都移到同色「正中中心塊」所在面的適當位置上,並使這些中心塊的方向與「正中中心塊」的方向配合,這是「搞定」的根本意思。可是,在進行第I至IIb步時,如果我們(有意或無意地)搞錯了某些「正中中心塊」的位置或方向,將有何後果?由於這涉及兩種可能性,以下分開討論。首先考慮搞錯「正中中心塊」位置的問題,這種情況是可能出現的,而且不會妨礙第I至IIb步的進行。換句話說,我們完全有可能把各種顏色的中心塊各自還原到錯誤的面上,例如下圖所示情況:

在上圖中,除了紅色面和黃色面上的「非正中中心塊」互相移到對方的對應位置上外,其餘所有中心塊都處於正確位置。請注意只有在其他魔方部件尚未搞定的情況下,上圖情況才可能出現。當進行接下來的還原步驟時,上圖情況便不能維持,這是因為上圖違反了魔方的原有結構。例如上圖情況要求一種「黃藍紅」角塊,其中黃色、藍色和紅色小面必須依次按順時針方向排佈在該角塊上,但這種角塊在原來的魔方上是根本不存在的(註1)。

跟上圖情況不同,某些位置錯誤情況可以一直維持到還原魔方的最後步驟,下圖便顯示其中一種可能情況:

上圖所示情況也可以看成把六個「正中中心塊」移位(但不移動其他部件)的結果,筆者在上一章中曾指出,只要不破壞魔方的結構和不改變其他部件軌道的「絕對奇偶性」,那麼上述移位是可以實現的。如有上圖所示情況,只需運用上一章表10、表11中的移位操作以及經修改的「雙中心/單中心旋轉公式」(例如上一章的公式(12)或(13)),便可把六個「正中中心塊」還原到正確位置和方向。

其次考慮搞錯「正中中心塊」方向的問題,這種情況雖然也可能出現,但在完成第IIb步時,各個「正中中心塊」的方向必然受到限制,例如下圖所示情況是不可能出現的:

在上圖中,黃色面以外五個面上的「正中中心塊」的方向都正確,只有黃色正中中心塊(即「I.00」中心塊)偏離正確方向90°。在此情況下,上圖中的兩個「四角中心塊」軌道(即「05」、「07」軌道)的「相對奇偶性」都是1,違反以下的「定理18」(在下式中,R-Parity代表「相對奇偶性」;Ci代表「四角中心塊」軌道):

定理18:R-Parity(Ci) = 0

因此儘管上圖中的魔方的邊塊和角塊尚未搞定,但已可斷定上圖所示情況是不可能出現的。跟上圖情況不同,某些方向錯誤情況可以一直維持到還原魔方的最後步驟,下圖便顯示其中一種可能情況:

在上圖中,除了紅色和綠色「正中中心塊」的方向各自偏離正確方向90°外,其餘所有「正中中心塊」都具有正確方向。請注意在上圖中,「正中中心塊」的「旋轉總和」是偶數,這不是偶然的,而是以下「定理21」的必然結果(在下式中,A-Parity代表「絕對奇偶性」;C、E0和C0分別代表角塊、「正中邊塊」和「正中中心塊」軌道):

定理21:A-Parity(C) = A-Parity(E0) = A-Parity(Ci) = A-Parity(C0)

當魔方的所有部件都已回到正確位置時,角塊軌道的「絕對奇偶性」必為偶數,即A-Parity(C) = 0,而根據「定理21」,必有A-Parity(C0) = 0,即「正中中心塊」的「旋轉總和」必為偶數。如有上圖所示情況,只需運用經修改的「雙中心/單中心旋轉公式」(例如上一章的公式(12)或(13)),便可把六個「正中中心塊」還原到正確方向。

偶數階超級魔方的不理想情況1

筆者在介紹「偶數階超級魔方」的還原攻略時,曾指出在進行第IIb步的第二小步時,可能要解聯立方程。具體地說,對於「2n階超級魔方」(n ≥ 3),根據「定理19」(在下式中,P1和P2代表配成一對的「配對中心塊」軌道,M1和M2代表與P1、P2處於相同「非正中夾心層」的「十字中心塊」軌道):

定理19:R-Parity(P1) = R-Parity(P2) = R-Parity(M1) +2 R-Parity(M2)

可以寫出下列n − 2條「線性獨立」的方程:

R-Parity(M1) +2 R-Parity(M2) = k1
R-Parity(M1) +2 R-Parity(M3) = k2
......
R-Parity(M1) +2 R-Parity(Mn − 1) = kn − 2

其中ki (1 ≤ i ≤ n − 2)是值為1或0的常數,代表與M1和Mi + 1處於相同「非正中夾心層」的「配對中心塊」軌道的「相對奇偶性」。上述聯立方程有兩組解,視乎我們把M1設定為1還是0。舉例說,若n = 5,並有以下聯立方程:

R-Parity(M1) +2 R-Parity(M2) = 1
R-Parity(M1) +2 R-Parity(M3) = 1
R-Parity(M1) +2 R-Parity(M4) = 0

如把M1設定為1,便有以下這組解:

R-Parity(M1) = 1, R-Parity(M2) = 0, R-Parity(M3) = 0, R-Parity(M4) = 1

如把M1設定為0,則有以下這組解:

R-Parity(M1) = 0, R-Parity(M2) = 1, R-Parity(M3) = 1, R-Parity(M4) = 0

在上述兩組解中,只有一組「正確解」(即正確反映隱去的「十字中心塊」軌道的「相對奇偶性」的那一組解),如何確定哪一組解是「正確解」?答案是運用「定理20」(在下式中,Ei和Mi分別代表處於同一「非正中夾心層」的「非正中邊塊」和「十字中心塊」軌道):

定理20:A-Parity(Ei) = R-Parity(Mi)

由於有以上關係式,我們可以透過計算A-Parity(Ei)來推斷相應的R-Parity(Mi),這樣便可確定聯立方程的哪一組解是「正確解」。下圖顯示一個隱去「正中夾心層」的「七階超級魔方」,用以模擬「六階超級魔方」(為方便以下討論,下圖標出了兩個隱去「十字中心塊」軌道的名稱,即M1和M2):

在上圖中,除了紅色面外,所有「中心區」均已搞定。現在讓我們重溫檢查紅色面上各個「非正中中心塊」軌道的「相對奇偶性」的方法,首先須在紅色面上找出一個適當的角落使得從該角落開始列出的「四角中心塊」軌道的字母排佈為偶排列。如果選擇紅色面的右上角,「05」四角中心塊軌道的字母排佈為「DBCA」,由於這屬於奇排列,違反「定理18」,所以右上角不是適當的角落,由此可知右下角和左上角必是適當的角落,這是因為若從某一個面的右上角開始列出的字母排佈為「xyzw」,則從該面右下角、左下角和左上角開始列出的字母排佈必然依次為「yzwx」、「zwxy」和「wxyz」。另外,若「xyzw」是奇(偶)排列,則「yzwx」、「zwxy」和「wxyz」必然依次為偶(奇)排列、奇(偶)排列和偶(奇)排列。

基於以上的討論,我們選擇紅色面的右下角,從該角落開始列出「08」配對中心塊軌道的字母排佈,將得到「ACBD」,屬奇排列,即我們有R-Parity(P08) = 1 (註2)。由於「08」配對中心塊軌道與M1、M2十字中心塊軌道處於相同的「非正中夾心層」,根據「定理19」,可以寫出以下方程:

R-Parity(M1) +2 R-Parity(M2) = 1

上述方程有兩組解:

R-Parity(M1) = 1, R-Parity(M2) = 0     (1)
R-Parity(M1) = 0, R-Parity(M2) = 1     (2)

為確定哪一組解才是「正確解」,我們可以檢查「02-06」非正中邊塊軌道的「絕對奇偶性」。讀者可自行驗證,上圖中「02-06」軌道是偶排列,即A-Parity(E02-06) = 0。由於「02-06」非正中邊塊軌道與M1十字中心塊軌道處於同一「非正中夾心層」,根據「定理20」,可得R-Parity(M1) = 0。由此可知,在上述兩組解中,只有(2)才是「正確解」。

從以上討論我們亦可得到一個推論:即使在為「偶數階超級魔方」進行第IIb步的第一小步時發現所有「非正中中心塊」軌道都是偶排列,這可能是因為所有隱去的「十字中心塊」軌道都是奇排列所致。因此如要確保所有隱去的「十字中心塊」軌道都是偶排列,我們還是要檢查各個「非正中邊塊」軌道的絕對奇偶性。如發現任何「非正中邊塊」軌道是奇排列,則從「定理20」可知相應的「十字中心塊」軌道也是奇排列,這時便要進行第二小步的程序。

根據筆者在《群論與魔方:偶數階超級魔方的還原攻略》的討論,無論根據哪一組解進行第IIb步的第二小步,均可使各個「配對中心塊」軌道變成偶排列;所不同者是如果選擇了非「正確解」,便會使所有隱去的「十字中心塊」軌道均變成奇排列。表面上看,由於「十字中心塊」軌道是隱去的,它們究竟是奇排列還是偶排列似乎無傷大雅,但其實會影響接下來第IV步和第V步第四小步的還原步驟。筆者在上述網頁中曾指出,在對「偶數階超級魔方」進行第IV步時,有可能出現須對魔方的某個「非正中夾心層」單用「單邊換位公式」或「單邊翻轉公式」的情況;在進行第V步的第四小步時,也有可能出現一個或三個「邊區」朝向正確方向的情況。上述兩種情況(以下統稱為「不理想情況1」)都只可能出現於「偶數階超級魔方」,這是因為這類魔方隱含著一些「十字中心塊」軌道,當這些軌道屬奇排列時,便可能導致「不理想情況1」出現。

請注意當所有「十字中心塊」軌道均為奇排列時,在進行第IV步時只是可能(而非必然)出現「不理想情況1」,現以下圖所示的「四階超級魔方」為例說明這一點:

上面顯示一個剛完成第IV步的「四階超級魔方」,如果細心計算這個魔方的「01-04」非正中邊塊軌道的「絕對奇偶性」,會發現這個軌道呈現奇排列,由此根據「定理20」,可知這個魔方隱去的「十字中心塊」軌道也呈現奇排列。不過,從上圖卻看不出這個問題。可是,如果繼續對這個魔方進行第V步,當進行至第四小步時,必然會出現一個或三個「邊區」朝向正確方向的情況。總括而言,如果我們能夠在進行第IIb步時確保所有「十字中心塊」軌道均成為偶排列,便可避免在進行第IV步和第V步第四小步時出現「不理想情況1」。

偶數階超級魔方的不理想情況2

筆者在介紹「偶數階超級魔方」的還原攻略時,提到在進行第V步的第六小步時,可能會出現魔方的上面只有兩個角塊已歸位,而其餘兩個角塊錯位的情況(以下統稱為「不理想情況2」);並指出如遇上述情況,可以像處理「偶數階普通魔方」一樣,運用《群論與魔方:更高階魔方的還原攻略》中介紹的方法處理。這種方法雖然可行,但頗為繁複,因為它要先運用「雙邊換位公式」和「雙邊翻轉公式」並重做第五小步,把魔方的上面變為只有一個角塊已歸位,而其餘三個角塊錯位的情況,然後才能按還原「奇數階普通魔方」的第六小步繼續處理。

其實,我們可以運用「逆向思維」方法以及有關魔方「絕對奇偶性」的知識來找出避免出現上述「不理想情況2」的方法,以下筆者將回顧《群論與魔方:Dan Knights攻略解析(下)》《群論與魔方:奇數階超級魔方的還原攻略》中介紹的還原方法,讀者如有需要,請重溫該網頁。我們知道,在魔方還原後,必有A-Parity(C) = 0。現在回溯還原超級魔方的最後步驟-第VI步,在這步中,要運用以下公式若干次:

雙中心旋轉公式L−1 R F−1 B U−1 D Ln D−1 U B−1 F R−1 L U−n     (3)
單中心旋轉公式(U R L U2 R−1 L−1)2(4)

以上兩條公式都包含偶數個「90°外表面旋轉」,因此不會影響A-Parity(C)(註3),由此可以逆推在進行第VI步前,必有A-Parity(C) = 0。接著回溯還原魔方第V步的第七小步,在這一小步中,我們會轉動魔方的上面90°(即進行U或U−1)零次或四次和運用以下公式若干次:

R−1D−1RD      (5)

容易看到上述操作也包含偶數個「90°外表面旋轉」,由此可以逆推在進行這一小步前,必有A-Parity(C) = 0。接著回溯還原魔方第V步的第六小步(這裡假設魔方的上面不出現「不理想情況2」),在這一小步中,我們會運用以下公式若干次:

URU−1L−1UR−1U−1L     (6)

上式同樣包含偶數個「90°外表面旋轉」,由此可以逆推在進行這一小步前,必有A-Parity(C) = 0。接著回溯還原魔方第V步的第五小步,在這一小步中,我們先要轉動魔方的上面(即進行U或U−1若干次,以下把這個操作稱為「最初的U」),使「紅藍」邊區歸位,接著要運用以下公式若干次:

RUR−1URU2R−1     (7)

最後可能還要再進行U一次(以下把這個操作稱為「最後的U」)。由於公式(7)包含偶數個「90°外表面旋轉」,在這一小步中只有「最初的U」和「最後的U」可能影響各部件軌道的「絕對奇偶性」。以下我們從這一小步的最後結果進行「逆向思維」,為幫助進行這種思維,以下提供公式(7)對魔方上面所起作用的示意圖(下圖代表魔方上面的俯視圖,其中「fu」、「ru」、「bu」和「lu」代表四個邊區位置,箭頭代表(7)的移位作用):

視乎是否需要進行「最後的U」,第五小步的進行過程有兩種可能情況,以下逐一討論。

情況(i):第五小步無需進行「最後的U」。導致這種情況的原因是,在進行「最初的U」和(7)若干次後,不僅「紅藍」和「黃藍」邊區已歸位,而且「白藍」和「橙藍」邊區也已歸位,所以無須再進行(7)和「最後的U」。如要產生這種結果,在完成「最初的U」後,魔方的上面必須呈現以下三個「九宮格」所示的情況之一:

由於接下來無需進行「最後的U」,可以逆推在出現上圖三種可能情況之一時,應有A-Parity(C) = 0。

情況(ii):第五小步需要進行「最後的U」。導致這種情況的原因是,在進行「最初的U」和(7)若干次後,雖然「紅藍」和「黃藍」邊區已歸位,但「白藍」和「橙藍」邊區仍未歸位,所以要再進行(7)一次和「最後的U」。如要產生這種結果,在完成「最初的U」後,魔方的上面必須呈現以下三個「九宮格」所示的情況之一(請注意下圖中三個「九宮格」中白色面和黃色面上的邊區顏色與上圖中對應「九宮格」中該兩個面上的邊區顏色剛好對調了位置):

由於接下來需要進行會改變A-Parity(C)的「最後的U」,而改變後的A-Parity(C)等於0,由此可以逆推在出現上圖三種可能情況之一時,應有A-Parity(C) = 1。

上述「逆向思維」是就著「奇數階超級魔方」的情況而進行的,但其結論可用來避免「偶數階超級魔方」的「不理想情況2」。由於「偶數階超級魔方」可被看成隱去了「正中夾心層」,在進行第五小步時,「正中邊塊」軌道可能尚未還原,因此其「絕對奇偶性」可以呈現各種可能性,由此根據「定理20」,A-Parity(C)也可呈現各種可能性,不一定與上述情況(i)或情況(ii)下理應有的A-Parity(C)吻合。

因此在對「偶數階超級魔方」進行第五小步時,在完成「最初的U」後(註4),應先看看魔方的上面出現前述哪種「九宮格」所示的情況,從而判斷當前的情況屬於前述的情況(i)還是情況(ii);然後檢查A-Parity(C),看看當前的A-Parity(C)是否與所屬情況下理應有的A-Parity(C)吻合。如兩者吻合,便可以按照還原普通魔方的方法繼續進行下去;如兩者不吻合,便應轉動整個魔方,使白色面向前,並先後運用「雙邊換位公式」和「雙邊翻轉公式」:

雙邊換位公式F2 Lx−1 F B−1 R2 F−1 B Rx Lx F B−1 R2 F−1 B Rx−1 F2     (8)
雙邊翻轉公式U−1 F R−1 U F−1 Rx−1 Lx F U−1 R F−1 U Rx Lx−1(9)

這樣做可以把「九宮格」中白色面和黃色面上的邊區對調位置,從而把情況(i)轉化為情況(ii),或把情況(ii)轉化為情況(i),而又不會影響魔方各部件的「絕對/相對奇偶性」(因為上述兩條公式各包含偶數個「90°外表面旋轉」和偶數個「90° 夾心層旋轉」),其結果是使當前的A-Parity(C)與所屬情況下理應有的A-Parity(C)吻合。現以下圖所示的「六階超級魔方」為例說明上述方法的運用。

上圖顯示剛對「六階超級魔方」完成「最初的U」的情況。在上圖中,ru、bu和lu邊區的顏色依次為橙藍、黃藍和白藍,屬於上述的情況(ii),理應有A-Parity(C) = 1。檢查上圖的角塊,容易看到「fru」角塊與「flu」角塊對調了位置,「bru」角塊也與「blu」角塊對調了位置,即A-Parity(C) = 0。由於當前的A-Parity(C)與情況(ii)下理應有的A-Parity(C)不吻合,我們要轉動整個魔方,使白色面向前,並先後進行(8)和(9)(請注意運用(8)和(9)時要把毗連的「02-06」和「01-09」邊塊看成區塊),下圖顯示上述操作的結果:

經上述操作後,魔方上ru、bu和lu邊區的顏色變成白藍、黃藍和橙藍,屬於情況(i),而且仍有A-Parity(C) = 0。由於當前的A-Parity(C)與情況(i)下理應有的A-Parity(C)吻合,我們可以按照還原普通魔方的方法繼續進行下去,而且接下來的還原過程不會出現「不理想情況2」。

以上討論了「偶數階超級魔方」的「不理想情況1」和「不理想情況2」,並介紹了避免出現這兩種不理想情況的方法。由於這兩種不理想情況各自有不同的根源,其中「不理想情況1」源於「十字中心塊」軌道的奇排列,「不理想情況2」則源於「正中邊塊」軌道的奇排列,這兩種不理想情況是互相獨立的,因此必須各別處理和避免。

註1:魔方只有「紅藍黃」角塊,即紅色、藍色和黃色小面依次按順時針方向排佈於其上的角塊。讀者可自行驗證,即使把魔方任意擰亂,使「紅藍黃」角塊順時針或逆時針扭轉,該角塊上的顏色排佈方向仍然不變。

註2:在「六階超級魔方」上,「08」與「04」軌道是配成一對的「配對中心塊」軌道,由此根據「定理19」,在檢查「配對中心塊」軌道的「相對奇偶性」和求解聯立方程時,只須以「08」軌道作為這一對「配對中心塊」軌道的代表。

註3:除了運用公式(3)和(4)外,其實還須不時轉動整個魔方,但整個魔方的轉動不會影響任何「奇偶性」,所以無須考慮這些轉動。

註4:由於我們無法預知「最初的U」包含多少個「90°外表面旋轉」,上述「逆向思維」只能進行到剛完成「最初的U」的時候為止。



返回數學專題
<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>