漢諾塔通項公式證明:
設三個塔分別為A、B、C。並設當A塔初始有n個盤子的時候,轉移到C塔需要用T(n)步。
首先,有如下規律:
T(0) = 0 (當沒有盤子的時候當然為0)
T(1) = 1
T(2) = 3
T(3) = 7
.....
T(n) = T(n - 1) + 1 + T(n - 1) = 2* T(n - 1) + 1
為什么T(n) = 2 * T(n -1 )+ 1 呢?
很容易可以想到,當n = n - 1 的時候,
(1)從A塔將所有盤子移動到C塔需要的步數是 T(n - 1)。
(2)如果從A到C移動的步數是T(n - 1),那么從A移動到B也需要T(n - 1)
那么當n = n 時:
(1)首先將A塔的全部盤子移動到B塔,需要T(n -1 )步。
(2)將A塔的最后一個盤子移動到C塔,需要1步
(3)將B塔的全部盤子移動到C塔,需要T( n - 1 )步。
最終結果需要 2* T(n - 1)+ 1 步。
所以T(n) = 2 * T( n - 1 ) + 1
那么通項公式是什么呢?該怎么證明呢?
很簡單~
令等式左右兩端同時加1,有:
T(n) + 1 = 2 * (T(n - 1) + 1)
設T(n) + 1 = S(n)
那么:S(n) = 2 *S(n - 1)
並且當n = 1 的時候,S(1) = 1;
那么S(n) = 2 ^ n
所以: T(n) + 1 = S(n) = 2 ^ n
即 T(n) = 2 ^ n - 1
證畢。