2013-10-18 82 views
0

請驗證我的邏輯,看看我正在嘗試的是有效還是陰涼。求解W(n)= W(n/2)+ n log n?

W(n) = W(n/2) + nlg(n) 

W(1) = 1 

n =2^k 

通過嘗試模式

line 1 : W (2^k) = W(2^k-1) + nlgn 

line 2 :   = W(2^k-2) + nlgn + nlgn 

... 

line i :   = W(2^k-i) + i*nlgn 

,然後解決其餘爲我。

我只是想確保它很酷,如果我在一個地方替換了2 k(在第1行),而在n lg n替換了另一個地方。

我通過2^k for 2^k lg(2^k)中的subbing發現真的很油膩。

有什麼想法,歡迎(特別是如果我要在2^k爲底層,如果我要那麼你會如何建議的解決方案)

回答

0

它的優良n和2 ķ之間來回切換因爲你假設n = 2 k。但是,這並不意味着你上面的內容是正確的。請記住,當n減小,正日誌n的值不斷下降,以及,因此它不是這樣,該陳述

線I = W(2 )+ I * N LG的Ñ

是正確的。

讓我們使用迭代方法中的一個更多的時間:

W(N)= W(N/2)+ N日誌N

=(W(N/4)+(N/2)的log(n/2))+ N日誌N

= W(N/4)+(N/2)(對數N - 1)+ N日誌N

= W(N/4 )+ n log n/2 - n/2 + n log n

= W(n/4)+( 1 + 1/2)N日誌N - N/2

=(W(N/8)+(N/4)的log(n/4))+(1 + 1/2)N日誌N - n/2個

= W(N/8)+(N/4)(對數N - 2)+(1 + 1/2)N日誌N - N/2

= W(N/8)+ N日誌N/4 - N/2 +(1 + 1/2)日誌N - N/2

= W(N/8)+(1 + 1/2 1/4 +)N log(n/8))+(1 + 1/2 + 1/4)n log n -n

(n/16)

= W(n/16)+(n/8)(log n-3))+(1 + 1/2 + 1/4)n log n - n

= + N日誌N/8 - 3N/8 +(1 + 1/2 1/4 +)N日誌N - N的

= W(N/16)+(1 + 1/2 1/4 + + 1/8)n log n - n - 3/8n

我們可以看看這個,看看我們是否發現一個模式。首先,請注意,隨着我們向外擴展,n log n項的係數爲(1 + 1/2 + 1/4 + 1/8 + ...)。這個序列收斂到2,所以當迭代停止時,該項將在n log n和2n log n之間。接下來,看看-n項的係數。如果仔細觀察,會注意到,這個係數是-1倍

(1/2 + 2/4 + 3/8 +16分之4+ 5/32 + ...)

這是I/2 總和,其收斂到2。因此,如果我們迭代這個過程中,我們將在每一步驟,該值是Θ找到(N log n)的 - Θ(n)的,因此整體的復發解決到Θ(N log n)的。

希望這會有所幫助!

+0

「這是我/ 2^I,其收斂到2的總和」,也許這是明確的你,但你是怎麼計算的呢? – NGix

相關問題