Algorithm T(N)=2T(N)的大O− 1) +N,T(1)=2
如何得到大O的这个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求和
我得到了答案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是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