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”,也许你很清楚,但你是怎么计算的?