我试着通过猜测然后通过归纳证明来解决复发,但是出了点问题

时间:2017-02-21 08:49:42

标签: algorithm

对于下面的重复,我发现了Big-O复杂度O()。

T(n) = 2 T(n / 2) + c n

T(1)= C1

我猜测它的T(n)= O(n)。

归纳假设: T(n)< = a k对于所有k< n。

T(n)= 2T(n / 2)+ c * n

T(n)< = 2(a *(n / 2))+ c * n

< = a n + c n

= O(n)的

我发现它完全正确,但我的TA在这个评分为0,你认为我哪里出错?

1 个答案:

答案 0 :(得分:1)

所谓的Master Theorem案例2指出

T(n) = O(n)

为您的例子。此外,如果a为真,则Quicksort(满足上述递归关系)将具有线性运行时复杂性,但情况并非如此。

关于你的论点,显然你声明存在一个T(n) <= a*n 常数

T(k) <= a*k for each k < n

成立。因此,归纳假设应该如下。

T(n) <= (a+c)*n

但即使假设这一点,诱导步骤也证明了

T(n) <= a*n

成立;但是,这证明了所需的属性,因为证明

{{1}}

成立。