如果n> 1,则找到关系T(n)= T(n-1)+ T(n-2)+ T(n-3)的时间复杂度。 3

时间:2012-09-27 13:13:56

标签: algorithm computer-science big-o time-complexity fibonacci

与斐波那契序列有些相似

算法的运行时间由

给出
T (n) =T (n-1)+T(n-2)+T(n-3) if n > 3

= n否则该算法的顺序是?

如果通过归纳法计算,那么

T(n) = T(n-1) + T(n-2) + T(n-3) 

让我们假设T(n)是某个函数aⁿ
然后aⁿ= a n-1 + a n-2 + a n-3
=> a³=a²+ a + 1

根据我的计算,

给出复杂的解也是上述方程的根源

a = 1.839286755
a = 0.419643 - i ( 0.606291) 
a = 0.419643 + i ( 0.606291) 

现在,我该如何进一步处理,还是有其他方法吗?

3 个答案:

答案 0 :(得分:3)

如果我没记错的话,当你确定了特征方程的根时,则T(n)可以是那些根的幂的线性组合

T(n)=A1*root1^n+A2*root2^n+A3*root3^n

所以我想这里最大的复杂性就是 (maxroot)^ n其中maxroot是你的根的最大绝对值。所以对于你的情况来说它是~1.83 ^ n

答案 1 :(得分:0)

渐近分析是针对程序的运行时间进行的,这些程序为我们提供了如何随输入增加运行时间。

对于递归关系(就像你提到的那样),我们使用两个步骤:

  1. 使用递归树方法估算运行时间。
  2. 使用替换方法验证(确认)估算值。
  3. 您可以在任何算法文本中找到这些方法的解释(例如Cormen)。

答案 2 :(得分:0)

它可以像3 + 9 + 27 + ...... 3 ^ n那样近似为O(3 ^ n)