算法導論(第三版)第二章2.3-3 使用數學歸納法證明...

題幹:

使用數學歸納法證明: 當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)

所以解成立

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章