二階齒輪方塊探討

2x2x2 Gear Shift Cube

此方塊由Oskar設計,由Meffert量產發行。


  1. 結構
  2. 幾種變化
  3. 解法
  4. 加強解法
  5. 最佳解

結構

它的構造蠻特別的,四個大齒輪與四個小齒輪位於六面體的八個角上。

大齒輪有8齒

小齒輪有5齒

相同大小的齒輪彼此不接觸,因此轉的時候,同Size的齒輪會同方向轉。
如下圖,若把一個大齒輪順時針轉動的話,所有大齒輪都會順時針轉,而小齒輪都逆時針轉。

因 8 與 5 互質,所以會組合出所有的情況,因此,若把2階齒輪直接這樣子轉亂,要回復原狀,就一直朝同一個方向轉,一定會回復。

難到Gear Shift就這麼容易嗎?

其實不是的,它還有別的機關!

它可以拉開成兩部份。

如下圖,是左右拉開的情況。

拉開後,兩個部份都可以獨立轉動,不互相影響。

如下圖,左右拉開後,可以只轉右半部。

左右、上下、前後,三個方向都可以拉開,但是不能同時,只能一個方向拉開。這個是此方塊設計最值得讚許的地方。(否則就太容易復原了!)

現在我們就來把它轉亂吧!記得要三個方向要輪流分開轉一轉,才會真的亂喔!

 

幾種變化

2階齒輪方塊,每個齒輪位置都固定不動,只有轉動,所以不用像其他方塊要計算位置變化(Permutation),只要計算旋轉即可(Orientation)。

小齒輪可以單獨轉一齒(見下一節):

所以小齒輪的所有組合情況都會發生,共 5^4 = 625種。

大齒輪無法單獨轉一齒(本文最後求最佳解一節有證明),又因為每次旋轉都是兩個或四個同時旋轉,所以「四個大齒輪所轉的齒數總合必為偶數」。

所以大齒輪的所有組合有 8^4 / 2 = 4096/2 = 2048 種。(扣除總合為奇數的情況)

因此共有 625*2048 = 1,280,000 種不同的變化。

 

解法

第一步 先解6角

1) 左右拉開,兩邊一直轉到上面四個角好。

2) 合併,然後翻過來,如下圖。

3) 上下分開,轉動上層直到另兩個角完成。

4)此時應該如下圖,只剩下兩個角。(運氣好的話,只會剩1角或者就已經完成了!)
 

第二步 解最後兩角

符號(Notation):

符號 示意圖 說明 備註

R

左右拔開後,
右面大齒輪順時針轉1齒。

R5表示順時針轉五齒。

R-8表示逆時針轉八齒。

U

上下拔開後,
上面大齒輪順時針轉1齒。

U-8表示逆時針轉八齒。

F

前後拔開後,
前面大齒輪順時針轉1齒。

F-5表示逆時針轉五齒。

L

N/A 左右拔開後,
左面大齒輪順時針轉1齒。
 

 

請先將剩下還沒轉好的齒輪,大的放左邊,小的放右邊,以方便說明。

公式

編號 情況 公式 備註
A1


左邊大角逆時針兩齒

F-5R5U-5

因為都是轉五齒,所以右上角的小齒輪,依序是順轉一圈、逆轉一圈、再順轉一圈,每次都會回到正確位置。
A2


右邊小角逆時針一齒

F8L-8U8

因為都是轉八齒,所以左上角的大齒輪,依序是順轉一圈、逆轉一圈、再順轉一圈,每次都會回到正確位置。

用此兩個公式,很容易就可以把此方塊解好了。等熟練了之後,可以再參考下一節的加強解法,可以讓你更快解出。

 

原理

公式A1,要讓大角逆轉2齒,但事實上並不是只轉2齒,而是10齒、18齒都可以,甚至是順轉6齒、14齒也行。所以比較嚴僅的來說,是大角要逆轉「8的倍數加2齒」,然後為了不破壞小角,所以我的方式就是利用小角轉一圈(五齒)來想辦法讓大角有所變動,而小角要轉一圈,就是轉了「5的倍數」齒。用數學式子來表示為:

5k = 8m+2, k, m為整數

雖然是無限多組解,不過我們當然是希望能轉動最少齒,所以取 m = 1, k = 2 的解。也就是利用大角實際上轉了10齒,來達成轉2齒的效果。

讀者可以仔細觀察公式A1的轉動,就會知道,左邊的大角總共轉了10齒,而其他的角,都是順逆相消了。

公式A2,同樣的道理,要讓小角轉1齒,也就是轉 5k+1齒,而實際上是轉了兩圈的大角(16齒)來達成。

 

加強解法

由於2階齒輪每一面的轉動順序是無關的,所以每面的轉動符合結合率,所以我們可以利用預先計算要轉動的步驟,互相抵消,來減少轉動的齒數。

以一個例子來說明:

上面的情況經過判斷,

右邊的大角須要順轉四齒,所以要逆做公式A1兩次,亦即:(F-5R5U-5)-2

右邊的小角須要順轉一齒,所以要逆做公式A2一次,亦即:(F8L-8U8)-1

將兩式結合,得:(F-5R5U-5)-2(F8L-8U8)-1 = R-10L8F2U2

所以只要轉動四次即可復原,事實上只要分開三次而已,因為 R 與 L 可以一起操作。

有沒有覺得很像乘法的指數率呢?這個也就是為何我要設計這樣符號的原因。

 

註:當然,也可以一開始8個角都用這樣計算來抵消,只是很容易亂掉。

 

最佳解

最佳解法指的是用數學的輔助,求出最少的步數解,並不是速解。若要速解的話,用上面的加強解法即可。

註:本節會用到一些線性代數(Linear Algebra)的概念。

 

由於2階齒輪,每個角的位置並不會移動,只會自轉,所以每一面的轉動順序是無關的,彼此互相獨立(Independent),

而每次的轉動,會一直累加,順逆轉會相抵消,所以有線性關係(Linear Property)。

我們先將每個角做編號:

假設 F, U, L, B, D, R 為每一面轉動的齒數,A為八角同時轉動齒數,以大角為準,順轉為正,逆轉為負。

則角1轉動的齒數為:A+F+U+L

角2轉動的齒數為:-A-U-B-L

角3轉動的齒數為:A+U+B+R

依此類推。

若目前方塊轉亂的情況如下:

就相當於解下面的聯立方程的整數解:

8條式子,15個變數,

可能要花不少時間才解的出來,好在線代有學到一些化簡的方式。

將其寫成向量型式:

這七個向量,很容易看出它們是線性相依(Linearly dependent),又因為 A=F+B=U+D=R+L,所以可以知道其秩(Rank)最多只有4,所以可以移除其中3個向量,讓解集合(Range)不變。那我們不妨就移除 A, B, D 三個向量,剩下F, U, R, L四個面向我們的面的代表向量。

讀者可以自行檢驗,剩下四個已經最少了,不能再刪了。所以此7種轉法的基底(Basis)為 {F, U, R, L},

因此

Theorem 1: Four rotations is necessary and sufficient to solve the all state of the 2x2x2 gear shift.

(定理1: 四步即可解出所有2階齒輪的情況,但三步不行。)

 

上例寫成矩陣型式,

就可以使用線代裡的各種方法來解;簡約梯矩陣(Reduced-echelon form), 投影矩陣(Pseudo inverse, A(ATA)-1AT)……之類的種種方法來解。甚至是直接用數學軟體來解。

上式解出來得:

其中的 Z 是任意整數,我們令 Z1= Z3 = Z4= 0,而 Z2 = -1,得

因此,只要轉 F14L-6R-4U18,這四步,即可解出這個2階齒輪。(而且我還可以知道角一轉3齒、角二轉2齒、角三轉2齒……)

 

文章最後,我們來用線代來推導上面的兩個公式:

Theorem 2: Algorithm F-5R5U-5 can just only rotation the big gear 2 teeth counterclockwisely.

定理2: 公式 F-5R5U-5 可單轉大角逆時針兩齒。

Proof: 即解下列聯立方程,即可:

解出後,令k3= k6= k8= 0, k7= -1,即得:

Q.E.D

Theorem 3: Algorithm F8L-8U8 can just only rotation the small gear 1 tooth counterclockwisely.

定理3: 公式 F8L-8U8 可單轉小角逆時針一齒。

Proof: 即解下列聯立方程,即可:

可求得其中一解為:

Q.E.D

最後用線代證明,大角不可能只轉一齒。

Theorem 4: The big gear can't only rotate just 1 tooth.

定理4: 大角不可能只單轉一齒。

Proof. 試解下面聯立方程

用電腦整數解,會立刻得到無解。若不用電腦的話,則須要花一點時間,還是驗證的出來,這個部份就留給讀者自己推導了。

 

 

註:若用Maple來跑聯立方程的整數解,可以使用 isolve 的指令。

 

 

歡迎留言