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

标签 algorithm math big-o time-complexity recurrence

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

最佳答案

通常,您需要对 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)

关于algorithm - : T(n) = 2T(n-1) + 3T(n-2)+ 1 的运行时间是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14990689/

相关文章:

C++ 结构指针数组

algorithm - 通过图形搜索找到最佳路径

c++ - 使用 pow() 会出错

php - 数学符号到php中的html?

algorithm - 证明一般树的树遍历算法的时间复杂度

algorithm - 按排序顺序列出 B 树中的键所需的时间?

java - 哪个 list<Object> 实现对于一次写入、读取和销毁来说是最快的?

algorithm - 了解 Freeverb 的梳状滤波器实现

python - 生成给定点 10 公里范围内的纬度/经度列表

c++ - 用于数学的 Node.js 与 C++