漢諾塔雜談(六)——變體之「循環移動」

漢諾塔雜談(六)——變體之「循環移動」

來自專欄 Liu言雜記4 人贊了文章

(抱歉更新速度很慢,因為學生的畢業季有很多事情要處理。)

所謂「循環移動」 就是在原始的漢諾塔問題(參看「漢諾塔雜談(一)」)上增加一個要求:

設A柱、B柱、C柱(及A柱)構成一個順時針方向的三角形,

所有的移動必須是順時針方向,即只能:或從A柱到B柱;或從B柱到C柱;或從C柱到A柱(如下圖所示)。

目標是將原來都處於A柱的 n 個盤子都移到C柱。


只有1個盤子時,那麼需要兩步:1號盤A→B、1號盤B→C。


有2個盤子時,那麼需要將2號盤從A「移到」(不止一步)C,就必須先後經歷將2號盤從A移到B、將2號盤從B移到C。

而要將2號盤從A移到B,就得先把1號盤從A移到C;要將2號盤從B移到C,就得先把1號盤再從C移到A;最後再把1號盤從A移到C。

但是這時要注意的是:"把1號盤從A移到C"和「把1號盤再從C移到A」是不同的問題!!!通俗地講,前者是要「跨過」B柱的、是不「相鄰」的移動,而後者則不然。

所以,有2個盤子時,可以採用下表方式分析(寫的有點粗略,應該能看懂吧= =),黃色部分可以看作類似原問題的子問題,而粉色部分和黃色部分是不同的。


更一般性地講,有 n 個盤子時,要採用如下的移動步驟:

  1. 先將A柱上的 1sim n-1 號盤子移到C柱上(這是一個類似於自己的子問題);
  2. 接著將最大的盤子( n 號)從A柱移到B柱;
  3. 之後再將C柱上的 1sim n-1 號盤子移到A柱上(注意,這不是一個類似於自己的子問題!!!);
  4. 接著將最大的盤子( n 號)從B柱移到C柱;
  5. 最後再將A柱上的 1sim n-1 號盤子移到C柱上(這還是一個類似於自己的子問題)。


因此我們需要定義一個「附屬問題」:設所有的移動必須是順時針方向,即只能:或從A柱到B柱;或從B柱到C柱;或從C柱到A柱。目標是將原來都處於A柱的 n 個盤子都移到B柱。

可以分析這時的解法是:

  1. 先將A柱上的 1sim n-1 號盤子移到C柱上;
  2. 接著將最大的盤子( n 號)從A柱移到B柱;
  3. 之後再將C柱上的 1sim n-1 號盤子移到B柱上。

如果用表格表示的話就是:


下面來計算移動步數:

假設最初的「循環移動」問題的解法的步數為 G(n) ,而「循環移動」問題的「附屬問題」解法的步數為 F(n)

則由解法描述有:

 egin{equation} left{ egin{aligned} G(n)&=G(n-1)+1+F(n-1)+1+G(n-1)\ F(n)&=G(n-1)+1+G(n-1)\ end{aligned} 
ight. end{equation}G(1)=2F(1)=1

我將採用兩種方法來求解。


(一) 基於「2階常係數線性齊次遞推關係」的解法。

F(n) 代入 G(n) ,得到:

 egin{equation} egin{aligned} G(n)&=2G(n-1)+F(n-1)+2\ &=2G(n-1)+(2G(n-2)+1)+2\ &=2G(n-1)+2G(n-2)+3 end{aligned} end{equation}

之後類似於「漢諾塔雜談(一)」和「漢諾塔雜談(五)——變體之「臨近移動」」的方法,處理一下常數「3」:令 g(n)=G(n)+1 ,則得到 g(n)=2g(n-1)+2g(n-2)

——這就是一個「2階常係數線性齊次遞推關係」:

假設序列 a(n) 滿足遞推關係 a(n)=c_1a(n-1)+c_2a(n-2) ,其中 c_1,c_2 為已知常數,又 a(0),a(1) 均已知(或者a(1),a(2) 均已知,可由遞推關係逆推出 a(0) )。

x^2-c_1x-c_2=0 為該遞推關係的特徵方程,假設它的兩個根為 alpha,eta (允許 alpha=eta 情況,即為二重根)。

可以很容易驗證 a(n)=(alpha+eta)a(n-1)-(alpha 	imes eta)a(n-2) ,及 a(n)-alpha	imes a(n-1)=eta	imes(a(n-1)-alpha	imes a(n-2))

遞推可以得到:

 egin{equation} egin{aligned} a(n)-alpha	imes a(n-1) &=eta(a(n-1)-alpha	imes a(n-2))\ &=eta^2(a(n-2)-alpha	imes a(n-3))\ &=dots\ &=eta ^{n-1}(a(1)-alpha	imes a(0)) end{aligned} end{equation}

由此再使用倒推法得到:

a(n)-alpha^na(0)=(eta^{n-1}+alphaeta^{n-2}+alpha^2eta^{n-3}+...+alpha^{n-1})(a(1)-alpha	imes a(0))

於是

  • alpha
eqeta 時, a(n)-alpha^na(0)=frac{{{alpha }^{n}}-{{eta }^{n}}}{alpha -eta }(a(1)-alpha	imes a(0)) ,即 {a(n)}=frac{left( {{a}_{1}}-eta {{a}_{0}} 
ight)}{alpha -eta }{{alpha }^{n}}+frac{left( {{a}_{1}}-alpha {{a}_{0}} 
ight)}{eta -alpha }{{eta }^{n}}
  • alpha=eta 時, a(n)-alpha^na(0)=n	imesalpha^{n-1}	imes(a(1)-alpha	imes a(0)) ,即 a(n)=a(0)	imesalpha^n+(a(1)-alpha	imes a(0))×n×alpha^{n-1}

回到遞推關係 g(n)=2g(n-1)+2g(n-2)

特徵方程為 x^2-2x-2=0 ,兩個特徵根為 alpha,eta=1pmsqrt{3}g(1)=G(1)+1=3g(2)=G(2)+1=8 ,可逆推得到 g(0)=1 。解得

g(n)=frac{3+2sqrt{3}}{6}(1+sqrt{3})^n+frac{3-2sqrt{3}}{6}(1-sqrt{3})^n ,即得 G(n)=g(n)-1


(二) 基於「矩陣遞推關係」的解法。

假設 X(n)=left( egin{matrix} G(n)\ F(n)end{matrix}
ight)A=left( egin{matrix} 2 && 1\ 2 && 0\ end{matrix}
ight)B=left( egin{matrix} 2\ 1end{matrix}
ight) 。則得到矩陣遞推關係:

X(n)=A	imes X(n-1)+B

可以進一步遞推得到

 egin{equation} egin{aligned} X(n) &=AX(n-1)+B\ &=A(AX(n-2)+B)+B=A^2X(n-2)+AB+B\ &=A^2(AX(n-3)+B)+AB+B=A^3X(n-3)+A^2B+AB+B\ &=dots\ &=A^nX(0)+(A^{n-1}+A^{n-2}+dots+A+I)B end{aligned} end{equation}

其中 I 是單位矩陣。

下面介紹一般性解法:

(首先我們假設 A 可以對角化,否則可以使用Jordan分解,過程類似,但是複雜點兒)

  • 假設A 可以對角化為 A=PLambda P^{-1} ,那麼 A^n=PLambda^nP^{-1}
  • 注意到 (A-I)(A^{n-1}+A^{n-2}+dots+A+I)=A^n-I ,於是如果 A-I 可逆的話,則 (A^{n-1}+A^{n-2}+dots+A+I)=(A-I)^{-1}(A^n-I)
  • 綜合這兩者,得到 X(n) =PLambda^nP^{-1}X(0)+(A-I)^{-1}(PLambda^nP^{-1}-I)B

回到具體問題, left( egin{matrix} 2 && 1\ 2 && 0\ end{matrix}
ight)=A=PLambda P^{-1} ,其中 P=left( egin{matrix} frac{1-sqrt{3}}{2} && frac{1+sqrt{3}}{2}\ 1 && 1\ end{matrix}
ight)Lambda=left( egin{matrix} 1-sqrt{3} && 0\ 0 && 1+sqrt{3}\ end{matrix}
ight)P^{-1}=left( egin{matrix} -frac{1}{sqrt{3}} && frac{1}{6}left(3+sqrt{3}
ight)\ frac{1}{sqrt{3}} && frac{1}{6}left(3-sqrt{3}
ight)\ end{matrix}
ight)(A-I)^{-1}=left( egin{matrix} frac{1}{3} && frac{1}{3}\ frac{2}{3} && -frac{1}{3}\ end{matrix}
ight) ,由 X(1)=left( egin{matrix} G(1)\ F(1)end{matrix}
ight)=left( egin{matrix} 2\ 1end{matrix}
ight) 可以逆推得到 X(0)=left( egin{matrix} 0\ 0end{matrix}
ight)

代入 X(n) =PLambda^nP^{-1}X(0)+(A-I)^{-1}(PLambda^nP^{-1}-I)B ,整理得到

X(n) =left( egin{matrix}frac{2+sqrt{3}}{2sqrt{3}}(1+sqrt{3})^n-frac{2-sqrt{3}}{2sqrt{3}}(1-sqrt{3})^n-1\ frac{1+sqrt{3}}{2sqrt{3}}(1+sqrt{3})^n-frac{1-sqrt{3}}{2sqrt{3}}(1-sqrt{3})^n-1end{matrix}
ight)


最後看一下「漢諾塔圖」,此時變成了有向圖,紅色有向邊形成了解:


推薦閱讀:

五年級趣味數學(10)
佛法數學 | 函數的本質是對應關係
孩子數學能學得輕鬆、學得好,全看這個概念有沒有理解透
「簡單」的幾何學!讓你懷疑人生!
【FLEB】迷你謎題盒

TAG:趣味數學 | 離散數學 | 組合數學Combinatorics |