algorithm - 简化 T(n) 运行时

标签 algorithm runtime analysis

给定以下函数

int g(int y) {
  if (y <= 0) {
    return 1;
  } 
  else {
    return g(y-1) + g(y-2) + g(y-3);
  }
}

我们需要找到T(n) 运行时间。现在,我知道你可以写

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

我只是不确定您是否可以进一步简化它,例如 T(n) = 3T(n-1) + 1

最佳答案

S(n) = T(n) + 1/2,则S(n) = S(n-1) + S(n-2) + S( n-3).

那么T(n)应该是c1 x1n + c2 x2n + c3 x3n - 1/2,其中 xi 是方程 x3 - x2 - x - 1 = 0ci 是特定系数。

T(n) 的精确解有点复杂。实际上 x1 = 1.84, x2,x3 = -0.42 ± 0.61i(是的,它们是不是实数)。

但是,如果 T(n) 可以简化为 T(n) = 3T(n-1) + 1,则 T( n) 必须类似于 c1 xn + c0。因此,您无法进一步简化它。

关于algorithm - 简化 T(n) 运行时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12879795/

相关文章:

sql - 用于数据分析的 NoSQL 或 RDBMS

比较c中的2个字符串递归

java - 以最小的空间复杂度查找数组中最大整数的总和

algorithm - 设计数据结构就像改进堆栈一样

C# UserControl - 在运行时添加它们

python - 检查字符串缩进?

algorithm - 用对数证明算法

algorithm - 为什么Big oh(O)也用于表示算法中的平均情况和最佳情况?

c# - 查找数字与特定数字集的所有加法组合的算法?

delphi - SmartTabs 运行时事件错误