漢諾塔問題家傳戶曉,其問題背景不做詳述,此處重點講解在有3根柱子的情況下,漢諾塔問題求解的通項公式的推導。
- 問題背景:有A,B和C三根柱子,開始時n個大小互異的圓盤從小到大疊放在A柱上,現要將所有圓盤從A移到C,在移動過程中始終保持小盤在大盤之上。求移動盤子次數的最小值。
- 變數設定:n為圓盤個數,H(k)為n=k時移動盤子次數的最小值。
- 遞推公式: H(k)=2H(k-1)+1。
- 通項公式:H(k)=2^k-1。
- 證明:
(1)證明遞推公式:首先被移動到C盤的必定是最大的盤子,否則必定違反“在移動過程中始終保持小盤在大盤之上”的規定。既然要將最大盤移動到C,此時最大盤之上必定沒有任何盤子,亦即它獨自在一根柱子上,要做到這點最優做法當然是先把較小的n-1個盤子由A移動到B,剩下最大盤獨自在A。將n-1個盤由A移動到B花費的最少次數為H(n-1)。此時再將最大盤由A移動到C,此時移動總次數為H(n-1)+1。接著把剩下的n-1個盤由B移動到C,花費的最少次數當然也是H(n-1)。於是得到總移動次數2H(n-1)+1.證得H(k)=2H(k-1)+1。
(2)推導通項公式。由H(k)=2H(k-1)+1得H(k)+1=2(H(k-1)+1),於是{H(k)+1}是首項為H(1)=1,公比為2的等比數列,求得H(k)+1 = 2^k,所以H(k) = 2^k-1