如何使用迭代求解T(n)= T(n-3)+ n ^ 2?根据主定理,答案是O(n ^ 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)
的结果相似。