Algorithm T(N)=2T(N)的大O− 1) +N,T(1)=2

Algorithm T(N)=2T(N)的大O− 1) +N,T(1)=2,algorithm,recursion,big-o,Algorithm,Recursion,Big O,如何得到大O的这个 我得到了答案O2^N或ON^2的两种变体,但我不确定如何正确地解决它将答案插入方程式中进行检查 2^N = 2.2^(N-1) + N = 2^N + N 或 只保留主要术语,你就有 2^N ~ 2^N 或 总结。将TN除以2^N,并将结果命名为: S(N) = T(N)/2^N 从TN的定义我们得到 这意味着SN增加,但很快收敛到一个常数,因为N/2^N->0。所以 或 详细证明 在下面的评论中,Paul Hankin建议如何完成证明。取等式1,从N=2到N=M求和

如何得到大O的这个


我得到了答案O2^N或ON^2的两种变体,但我不确定如何正确地解决它

将答案插入方程式中进行检查

2^N = 2.2^(N-1) + N = 2^N + N

只保留主要术语,你就有

2^N ~ 2^N 

总结。

将TN除以2^N,并将结果命名为:

S(N) = T(N)/2^N
从TN的定义我们得到

这意味着SN增加,但很快收敛到一个常数,因为N/2^N->0。所以

详细证明

在下面的评论中,Paul Hankin建议如何完成证明。取等式1,从N=2到N=M求和

因此,在取消索引为N=2,3,…,M-1的项之后,我们得到


因为右边的级数收敛,因为它的项在已知收敛的N>>1的1/N^2范围内,所以SM收敛到一个有限常数。

这是一个数学问题,Leandro Caniglia是正确的

设bn=Tn/2^n

因此bn=bn-1+n/2^n=bn-2+n/2^n+n-1/2^n-1

i/2^i对于每个整数i小于1

所以它们的总和是有限的,必须小于某个常数

因此bn 因此,Tn<2^n*C

很明显,Tn>=2^n


所以Tn是O2^n

很好的证明,但有一点不准确:fi->0并不意味着sumfi=1..无穷收敛。例如,fi=1/i。但是当N>=10时,可以显示N/2^N<1/N^2,并且sum1/N^2收敛,所以sumN/2^N收敛。使用单调收敛定理。谢谢@PaulHankin,我已经完成了证明。
2^N ~ 2^N 
N^2 ~ 2 N^2.
S(N) = T(N)/2^N
S(N) = S(N-1) + N/2^N                                  (eq.1)
T(N)/2^N -> constant
T(N) = O(2^N)
sum_{N=2}^M S(N) = sum_{N=2}^M S(N-1) + sum_{N=2}^M N/2^N
                 = sum_{N=1}{M-1} S(N) + sum_{N=1}^{M-1} (N-1)/2^{N-1}
S(M) = S(1) + sum_{N=1}^M N/2^N - M/2^M