題幹:
使用數學歸納法證明: 當n剛好是2的冪時,以下遞歸式的解是T(n)=nlgn.
遞歸式的內容:
T(n) = 2 (若n = 2)
T(n) = 2T(n/2)+n (若n = 2^k, k > 1)
計算步驟:
1. 先計算證明 在遞歸式的開始部分 解能成立;
2. 再證明遞歸式的第二部分內容:
3. 先將原遞歸式寫爲帶有不同變量的部分 比如這次的例題裏 T(n) 和 T(n/2) 就是變量不同的部分 將n替換爲新變量 即分別替換爲T(2^k ) 和 T(2^(k+1)) 得到新遞歸式 T(2^(k+1)) = 2*T(2^k)+2^(k+1)
4. 假設題目中給出的解正確 將題目中的解根據第一種變量帶入. 比如題目中的解是 T(n)=nlgn , 就將T(2^k) = 2^k * k 帶入步驟3中的新遞歸式
5. 計算帶入假設解了的新遞歸式 直到該遞歸式的樣式變成"所有的變量均有新變量k+1組成"的樣子 則證明解成立
比如 步驟3中的新變量是2^k 和 2^(k+1) 已經將變量爲T(2^k )的假設解帶入了 就需要推算出所有變量的樣式是2^(k+1)
解:
(1) 當n = 2 時, 假設解成立, 即T(2) = 2*lg2成立, 計算得出T(2) = 2, 所以當n=2時,該解成立
(2) 當n = 2^k時, 假設解成立, 即T(2^k) = 2^k*lg(2^k)成立, 若能推算出T(2^(k+1)) = 2^(k+1)*lg(2^(K+1))亦成立(即將原式子中的k替換爲k+1),則解成立.
計算過程如下:
在原遞歸式中 將n替代爲2^(k+1) 可得到遞歸式爲:
T(2^(k+1)) = 2*T(2^k)+2^(k+1)
根據假設成立的解, T(2^k) = 2^k*lg(2^k) 將該解帶入原遞歸式 得到:
T(2^(k+1)) = 2* 2^k*lg(2^k) + 2^(k+1)
2*2的某次方 次方直接+1
T(2^(k+1)) = k * 2^(k+1) + 2^(k+1)
再將等式右邊2^(k+1)提取公因式
T(2^(k+1)) = (k+1) * 2^(k+1)
所以解成立