2017-02-01 85 views
0

我正在做一個家庭作業的問題,需要我比較nlogn和下面的重複。至於nlogn是否低於,高於或者緊於下面的時間複雜度。解決復發關係的時間複雜度?

| 5    n = 1 
--| 2T(n/2) + n n > 1 

我覺得2T(N/2)+ N降低到nlogn但我不完全知道如何解決的遞推關係..

謝謝您的幫助。

+1

您是否嘗試過遞歸樹? – synchronizer

+0

不太確定。我的書有很多離散數學的證明 – bychit

+0

遞歸樹也應該給出結果。你可以很容易地找到結果,因爲這是一個流行和簡單的好看的重現 –

回答

0

解決復發(我希望我這樣做是正確的):

2T(n/2) + n 
2[2T(n/4) + n/2] + n 
2^2*T(n/2^2) + 2n 
you find the pattern if you keep on substituting new n 
2^k*T(n/(2^k)) + kn 
at this point you solve for closed form using the base case then n = 1 
so for n/n = 1, we set 2^k = n, so k = logn 
sub in k 
2^(logn) * T(1) + (logn) * n 

note that 2^logn = n with base 2 and T(1) = 5 for the base case 
so we obtain 5n + nlogn 
5n + nlogn is just O(nlogn) 

既然我們都爲O(nlogn),它是一個嚴密的綁定或大西塔。

或者,您還可以使用主定理輕鬆地減去複雜性。如果你已經學會了。

a = 2 
b = 2 
c = 1 

滿足以上2的情況下,這是Θ(nlogn),指維基https://en.wikipedia.org/wiki/Master_theorem

+0

讓我弄清楚你做了什麼。謝謝 – bychit

0

簡答 - 您可以(也應該)使用「主定理」來找到此復發的O標記。

大師定理是一個方便的工具來解決復發,它應該是你的第一個選擇,因爲你可以很快得到結果。你可以得到一個動手本exercise