运行时间t(n)= t(n-2)+(n-2)²

时间:2012-09-22 07:28:50

标签: algorithm big-o big-theta

有人能告诉我以下解决方案是否正确?

我正在尝试计算 t(n)= t(n-2)+(n-2)²的运行时间

进一步评估

=> t(n)= t(n-4)+(n-2)²+n²

=> t(n)= t(n-6)+(n-6)²+(n-2)²+n²

...因为它减少了2,它将有大约n / 2项并扩展所有方格 我们有(n / 2)*(n²)等于n³。所以运行时间是 theta(n³)

这是正确的解决方案吗?

2 个答案:

答案 0 :(得分:3)

是的,以上是完全正确的(根据问题定义,第一行的小例外应该是t(n) = t(n-4) + (n-4)^2 + (n-2)^2,并纠正以下内容 - 但它不会影响渐近结果)。

为了证明这一点,我们可以使用mathematical induction

Claim: t(n) <= n^3
base: T(2) = 2 (assumption - otherwise we'll get stuck)
let's assume the assumption is true for each n<k for a certain k.
t(k) = t(k-2) + (k-2)^2 <= (k-2)^3 + (k-2)^2 = 
     = k^3 -6k^2 + 12k -8 + k^2 - 4k + 4
     = k^3 -5k^2 + 8k - 4

剩下的就是显示5k^2 >= 8k - 4,我们就完成了。这个等式适用于每个k>=2 - 证明它是精确的。

从上面我们可以导出t(n)在O(n^3)。使用类似的方法我们可以显示它也在Omega(n^3)中,因此它是Theta(n^3)

答案 1 :(得分:2)

Using this online calculator你可以看到Θ(n ^ 3)。

n^3

正如我想的那样,右乘法会产生Θ(n ^ 3)。