复发2T(n-1)+ O(n)的时间复杂度是多少?

时间:2015-08-01 12:37:39

标签: algorithm math big-o time-complexity

T(n)= 2T(n-1)+ O(n)的渐近复杂度是多少?我猜它是用替代方法解决的。如何解决这种复发?您可以假设算法在达到T(1)时停止。

2 个答案:

答案 0 :(得分:0)

此处不能使用master theorem,因为尺寸缩小系数b(=(n-1)/ n)基本上等于1.

但是,如果计算前几个术语,那么您可以很容易地看到时间复杂度为2 ** n:

setmqinst -i -p /opt/mqm

答案 1 :(得分:0)

替换方法有一个技巧。如果您尝试直接的方法,那么您将获得

T(n) <=? 2^n
T(n) = 2 T(n-1) + cn
     <= 2^(n-1) + 2^(n-1) + cn
     = 2^n + cn,

不小于或等于2^n。解决方案不直观:减去低阶项。省略一些摆弄以获得正确的,

T(n) <=? d 2^n - cn - 2c
T(n) = 2 T(n-1) + cn
     <= 2 (d 2^(n-1) - c (n-1) - 2c) + cn
     = d 2^n - cn - 2c,

并设置d以涵盖基本情况。 (鉴于你想要大O,你甚至不需要非常准确地猜出正确的术语。)