我正在使用遞歸樹解決這個問題。每個級別的總成本爲n,樹的深度介於log (n) base 4
和log (n) base 4/3
之間。直覺上來說,我認爲解決方案最多是級別數乘以每個級別的成本。 O(cn log (n) base 4/3) = O(n log n)
。我想知道如果我的方法解決這個問題,我的解決方案是正確的?如何解決遞歸複雜度T(n)= T(n/4)+ T(3n/4)+ cn
3
A
回答
0
想想這樣:對於第一個日誌遞歸樹的n層,這些層之間的工作總和將爲cn,因爲如果總結所有子問題的總大小,應該總共n,所以總的工作是cn。這意味着完成的工作是Ω(n log n)。
假設在樹的每一層完成的工作總和爲O(n)(當它在樹中越來越低時它實際上會下降,所以你可以上限工作,所以這是一個上限)和高度是log 4/3 n。這給出了O(n log n)的工作上限。
由於完成的工作是Ω(n log n)和O(n log n),所做的工作更合適Θ(n log n)。
希望這有助於!
0
編輯:失蹤的OP,並回答了錯誤的解決方法,下面是我的精緻嘗試
直觀地說,你是對的。
對於更正式的方法,您可以用數學來證明它。
的魔術是在這裏:Akra-Bazzi theorem這是主定理
的更一般的版本對於關係T(n) = T(n/4) + T(3n/4) + cn
我們得到了g(n) = cn, k = 2, a1 = a2 = 1, b1 = 1/4, b2 = 3/4
通過定理,我們要解決p表示a1b1^p + a2b2^p = 1
這顯然是p = 1
然後T(n) = O(n^p * (1+integration(1/n dn))) = O(n*(1+log(n))) = O(nlogn)
符合我們的猜測
相關問題
- 1. 如何解決T(N)= T(N-2)+ T(2)+ N遞歸樹
- 2. 遞歸的複雜性:T(n)= T(n-1)+ T(n-2)+ C
- 3. 如何解決這個複雜的等式,T(n)= T(n-3)+ T(n-5)
- 4. 如何解決:T(N)= T(N - 1)+ N
- 5. 計算遞歸算法T(n)的時間複雜度= T(K)+ T(NK)
- 6. 解決遞歸T(N)=日誌(T(N-1))+ 1
- 7. 如何解決如$ T(n)= T(n/2)+ T(n/4)+ O(m)這樣的遞歸關係$
- 8. T(n)=(T(n-1)+ n!)的時間複雜度是多少?
- 9. 如何找到遞歸關係T(N)= T(N/2)+ N^2
- 10. 解決復發T(n)= T(n/2)+ lg n?
- 11. 解決一個復發的關係T(N)= T(N-√N)+1
- 12. 如何刪除\ n,\ t出現單詞,例如「\ n \ t \ t \ t \ t周\ n \ t \ t \ t」?
- 13. T(n)的的漸近複雜= T(N-1)+ 1/N
- 14. 復發關係:T(n)= T(n/2)+ n
- 15. 復發T(n)= T(n - log(n))+ 1
- 16. 復發:T(n)= T(n/2)+ log N
- 17. 求解:T(n)= T(n/2)+ n/2 + 1
- 18. 遞推關係:解決T(N-1)
- 19. 解決T(N)=√2* T(N/2)+登錄N使用主定理
- 20. 復發T(N)的= T(N/3)+ T(2N/3)
- 21. 復發關係T(n)= T(n ^(1/2))+ T(nn ^(1/2))+ n
- 22. 解決類似復發:T(N)= 3T(N/3)+ N/3
- 23. T-SQL遞歸
- 24. T SQL遞歸
- 25. T(N)= T(N-1)+ 10/N
- 26. T(n)= T(n - sqrt(n))
- 27. 如何找到T(n)= T(n-1)+ n + 2的遞推方程?
- 28. 傳遞給python3模塊的string.split()值解釋'|'像\ n \ t \ t \ t \ t。爲什麼?
- 29. 復發T(N)= T(N/3 + 5)+ T(2π/ 3 + 7)+ O(1)
- 30. 使用主定理求解重複T(n)= T(n/2)+ O(1)?