运行时间是多少:T(n)= 2T(n-1)+ 3T(n-2)+ 1

时间:2013-02-20 21:55:48

标签: algorithm math big-o time-complexity recurrence

据我所知,它类似于具有指数运行时间的斐波纳契数列。然而,这种递归关系有更多的分支。 T(n) = 2T(n-1) + 3T(n-2)+ 1的渐近界是什么?

2 个答案:

答案 0 :(得分:1)

这种类型的重复被称为:non-homogeneous recurrence relations,你必须在开始时求解均匀重复(最后没有常数的那个)。如果你有兴趣,请阅读它背后的数学。

我会告诉你一个简单的方法。只需在wolfram-alpha中输入等式即可得到:

enter image description here

这显然是一个指数复杂性:O(3^n)

答案 1 :(得分:0)

通常,你需要对T(0)和T(1)做一些假设,因为它们会有指数多个,它们的值可能决定T(n)的函数形式。但是在这种情况下似乎并不重要。

然后,可以通过找到它们的特征多项式来求解这种形式的递归关系。我发现了这篇文章:http://www.wikihow.com/Solve-Recurrence-Relations

我获得了根3和1的特征多项式,因此猜测形式T(n) = c_1*3^n + c_2。特别是,T(n) = 1/2*3^n - 1/4满足递归关系,我们可以验证这一点。

1/2*3^n - 1/4 = 2*T(n-1) + 3*T(n-2) + 1
              = 2*(1/2*3^(n-1) - 1/4) + 3*(1/2*3^(n-2) - 1/4) + 1
              = 3^(n-1) - 1/2 + 1/2*3^(n-1) - 3/4 + 1
              = 3/2*3^(n-1) - 1/4
              = 1/2*3^n - 1/4

因此它会给T(n) = Theta(3^n)。但是,这可能不是唯一能够满足重现的函数,其他可能性也取决于您定义的值T(0)T(1),但它们都应该是O(3^n)