有人能告诉我以下解决方案是否正确?
我正在尝试计算 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³)
这是正确的解决方案吗?
答案 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)