T(n)= 2T(n-1)+ O(n)的渐近复杂度是多少?我猜它是用替代方法解决的。如何解决这种复发?您可以假设算法在达到T(1)时停止。
答案 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,你甚至不需要非常准确地猜出正确的术语。)