Math 求递推W(n)=W(n/2)+;n日志n?

Math 求递推W(n)=W(n/2)+;n日志n?,math,big-o,recurrence,Math,Big O,Recurrence,请验证我的逻辑,看看我尝试的是有效的还是可疑的 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 然后为我解决剩下的问题 我只是想确定,如果我在一个地方(第1行)用2k代替n lg 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
然后为我解决剩下的问题

我只是想确定,如果我在一个地方(第1行)用2k代替
n lg n
,而不是在另一个地方,这是很酷的

我发现用
2^k代替2^k lg(2^k)
会变得非常油腻


任何想法都是受欢迎的(特别是如果我应该使用2^k,如果我应该,那么你会如何建议解决方案)

根据需要在n和2k之间来回切换是可以的,因为你假设n=2k。然而,这并不意味着你上面所说的是正确的。请记住,当n减小时,n log n的值也会不断减小,因此语句不是这样

线i=W(2k-i)+i*n lg n

这是真的

让我们再次使用迭代方法:

W(n)=W(n/2)+n对数n

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

=W(n/4)+(n/2)(对数n-1)+n对数n

=W(n/4)+n对数n/2-n/2+n对数n

=W(n/4)+(1+1/2)n对数n-n/2

=(W(n/8)+(n/4)log(n/4))+(1+1/2)n log 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对数n-n

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

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

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

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

我们可以看看这个,看看我们是否发现了一种模式。首先,注意,当我们不断向外扩展时,n logn项的系数为(1+1/2+1/4+1/8+…)。这个级数收敛到2,所以当迭代停止时,该项将在n logn和2n logn之间。接下来,看看-n项的系数。如果你仔细观察,你会发现这个系数是-1倍

(1/2+2/4+3/8+4/16+5/32+…)

这是i/2i之和,收敛到2。因此,如果我们迭代这个过程,我们会发现在每一步的值都是Θ(n logn)-Θ(n),所以整体递归解为Θ(n logn)


希望这有帮助

“这是i/2^i的和,收敛到2”,也许你很清楚,但你是怎么计算的?