倆心相約連環怎麽打開
而如果想要挑戰壹些更有難度的,可以推薦給大家壹個九連環
那我們來仔細看壹下九連環的結構。
九連環每個環套在另壹個環的軸上,然後再以壹種優雅的姿態套在桿子上。玩的目的就是要把桿子從九個環中分離出來,並且還要裝回去恢復原樣。我們來看看怎麽操作呢?
首先我們要編號:上圖最左邊的環為環1,最右邊的為環9。
如果我們不想通過太暴力的手段損壞九連環,那就必須接受它的結構所強制的規則,這樣才能使用巧勁把壹個個環依次解開。
規則:
任何時候環1可從桿子上取下或者從桿子下套上。
對於環k(k>1),必須在同時滿足以下兩個條件時,才可從桿子上取下或套上:
a) 環k-1套在桿子上
b) 環1,2…k-2(如果有的話)沒有套在桿子上
舉例:
我們來舉例如何解3連環吧。這裏我們用二進制碼。但是呢,我們要把圖片左右鏡像下,讓手柄在左邊,離手柄最近的仍然是最高位環9,離手柄最遠的仍然是最低位環1。那麽呢,解三連環,我們:
111
110
010
011
001
000
初始狀態111,然後壹***五步。
求解:
認為每次將壹個環從桿子上取下或者套上為壹個基本步驟,以下計算解開9連環的步驟數。
先計算
P(n):在前n-1個環取下的狀態下,將環n取下或套上,並且保持前n-1個環取下狀態的步驟數。有P(0)=0,在n>0時,這樣操作:
將環n-1套上,保持其它環狀態不變。此處需P(n-1)步。
將環n取下或套上。此處需1步。
將環n-1取下,保持其它環狀態不變。此處需P(n-1)步。
這樣,P(n)=2P(n-1)+1。也就是P(n)=2^n-1
再設解n連環,也就是將n個套在桿上的環全部取下的步驟數為T(n),有T(0)=0, T(1)=1, 在n>1時,解法如下:
將前n-2個環取下。此處需T(n-2)步。
將環n取下。此處需1步。
此時狀態為:環1…環n-2取下,環n-1套上。保持其它環狀態不變,取下環n-1。此處需P(n-1)步。
這樣,T(n)=T(n-2)+1+P(n-1),也就是T(n)=T(n-2)+2^(n-1)
壹些等比數列求和,整理什麽的,得:
n為奇數時,T(n)=(2^(n+1)-1)/3
n為偶數時,T(n)=(2^(n+1)-2)/3
所以九連環解開的步驟數為T(9)=341步。
接下來考慮把九個環裝回去,當然也是341步,但是還有另外的做法。
回到之前的編碼,裝九連環的過程就是:
步驟0:000
步驟1:001
步驟2:011
步驟3:010
步驟4:110
步驟5:111
。。。
每相鄰兩個狀態都僅有1位不同,很熟悉的編碼,格雷碼。原來九連環就是壹個手工的格雷碼發生器。裝九連環的步驟數就是格雷碼111111111的序號,就是把格雷碼111111111轉化成正常二進制碼,再轉十進制。百度壹下,知格雷碼111111111轉成二進制是101010101,再轉十進制,也是341。
那麽問題來了,壹開始我說,僅用壹節語文課的時間,就能成功的將九連環解開並且恢復原樣,這是不是吹的呢?年代久遠我自己也不記得了,當然我現在再去操作,也早就生疏做不到了。那麽當年到底做到了嗎?我們可以估算壹下。
每個步驟,保守估計,需要2秒完成吧,那麽解開再裝上,需要341*2=682步。那麽總***需要682*2=1364秒=22.7分鐘。壹節語文課,妥妥的。