如何使用迭代求解T(n)= T(n-3)+ n ^ 2?

时间:2019-01-16 09:49:49

标签: algorithm time-complexity big-o

如何使用迭代求解T(n)= T(n-3)+ n ^ 2?根据主定理,答案是O(n ^ 3),但我无法通过迭代来解决。

3 个答案:

答案 0 :(得分:1)

通过直接解决重复发生:

这是一阶的线性重复。我们首先求解齐次部分,

T(n) = T(n - 3)

由一个常数求解(更精确的说是三个常数,因为三个相互交织的序列形成了解)。

现在对于非同质部分,我们使用Ansatz T(n) = an³ + bn² + cn + d,因为我们知道两个三次多项式的差是二次项。

然后

a(n³ - (n-3)³) + b(n² - (n-3)²) + c(n - (n-3)) = 9an² + 3(-9a + 2b)n + 3(9a - 3b + c) = n²

给予

a = 1/9, b = 1/2, c = 1/2.

最后

T(n) = (2n³ + 9n² + 9n)/18 + T(0)

,其他两个序列也是如此。

答案 1 :(得分:0)

只需尝试扩展方程式即可:

T(n) = n^2 + (n-3)^2 + (n-6)^2 + ... + 1 = \Theta(n^3)

答案 2 :(得分:0)

T(3) = T(0) + 3²
T(6) = T(3) + 6² = T(0) + 3² + 6²
T(9) = T(6) + 9² = T(0) + 3² + 6² + 9²
...

更一般而言,T(3N)T(0)的总和,是N之前的自然平方的总和的9倍。著名的Faulhaber公式证明O(N³)是正确的。

T(3N+1)T(3N+2)的结果相似。