簡體   English   中英

展開遞歸遞歸關系

[英]Unrolling recursive recurrence relations

我找不到我的問題的解決方案,因為通常解決方案(用大的 Os 術語)是所要求的,而不是展開的重復。 如果已經問過,請告訴我,我會刪除。

我在 uni 的算法和數據結構測試中遇到了這個問題,我一直在努力解決這個問題。 主要是因為我不明白我是如何得出正確答案的。

我有以下關系:

T(1)=2
T(n)=2T(n-1)+2 for n>=2 

答案是:

1. T(n)= 2^n+1 -2
2. T(n)= none of the answers are correct 
3. T(n)= 1/2n(n+1)-1 
4. T(n)= 2^n+1 -2-n
5. T(n)= n+ (-1)^n

這是我嘗試過的:

T(1)=2
T(n)=2T(n-1)+2 -> T(n-1) = T(n-2)+2 
    =2T(n-2)+2+2 
    =2T(n-2)+4 -> T(n-2) = T(n-3)+3 
    =2T(n-3)+2+4 
    =2T(n-3)+6 so then -> 2T(n-k)+2k and if n=k 2T(n-n)+2n -> 2T(0)+2n 

但我沒有 T(0) 案例。 此外,這種方法最終會讓我了解大 O 解決方案,盡管這不是我現在想要找到的。

有人願意向我解釋獲得正確答案的正確方法嗎?

謝謝你。

不要展開答案,只是檢查它們。

因此,對於每個可能的答案,請檢查是否T(1)=2 ,並且如果替換給定的T(n)是否等於T(n)=2T(n-1)+2 因此,對於第一個答案T(1)=2^(n+1)-2=4-2=2 (應該如此)並且:

T(n) =?= 2*T(n)+2
2^(n+1)-2 =?= 2*(2^(n)-2)+2

使用簡單的 =?= 來表示要檢查的相等性。 簡化雙方導致:

2^(n+1)-2 =?= 2*2^(n)-2

rest 我留給你

T(n)=2T(n-1)+2 等價於 T(n)+2 = 2(T(n-1)+2)。

所以 T(n)+2 = 2^(n-1)(T(1)+2) = 2^(n-1)*4 = 2^(n+1)。 因此 T(n) = 2^(n+1)-2。

這個問題類似於https://cs.stackexchange.com/questions/18900/how-do-i-show-tn-2tn-1-k-is-o2n

你可能也明白如何解決這個問題......

簡單的方法是注意到它是指數的,然后檢查兩個指數的答案......

但是如果你想展開它,那么你會得到:

T(n) = 2 + 2T(n-1)
     = 2 + 4 + 4T(n-2)
     = 2 + 4 + 8 + 8T(n-3)
     = 2 + 4 + 8 + ... + 2^(n-1)T(1)
     = 2 + 4 + 8 + ... + 2^n

然后你認識到進展並做:

T(n) = 2T(n) - T(n)
     = 2^(n+1) - 2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM