algorithm - 求解递归T(n) = 3T(n/5) + T(n/2) + 2^n

标签 algorithm time-complexity

我在假设 T(n) 是接触 n <= 2 的情况下求解 T(n) 的递归。我开始用树方法求解这个 T(n),因为我们不能使用主方法在这里,但是当我做这棵树时,我当然是在计算这个 T(n) 的时间 C,但是我的 C-s 非常重要而且很奇怪,所以我得到了

c = 2^n 然后对于下一个 c 我得到 ' 3 * 2^(n/5) + 2^(n/3)

而且我不知道如何用这些值来解决,我做错了什么或者我应该遵循什么程序来解决这个问题?

最佳答案

您可能希望尽可能减少术语的数量。

3 * 2^(n/5) + 2^(n/3) = 3 * (2^(1/5) * 2^n) + (2^(1/3) * 2 ^n)

然后将所有系数组合在一起。

(3 * 2^(1/5)) * 2^n + (2^(1/3)) * 2^n

注意公因数是 2^n。所以你会得到:

(3 * 2^(1/5) + 2^(1/3)) * 2^n

我将产品的第一部分命名为 constant 会给我们:

constant * 2^n 就是 T(2^n) 因为随着 n 的大小变得非常大,该常量变得微不足道。

关于algorithm - 求解递归T(n) = 3T(n/5) + T(n/2) + 2^n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48792597/

相关文章:

algorithm - 计算 split 为 1 的树的时间复杂度 :3 ratio unlike binary tree

algorithm - 为 delaunay 三角剖分实现 Bowyer-Watson 算法

java - JDK类方法的时间复杂度度量

c - 子集和 - 二维动态规划

java - 迭代和计算 map 中的数字

c - 在C中填充二维数组的算法

c++ - 将数组存储在 vector 中并对元素进行排序

java - 查找数组中最大整数的算法

java - Java 中的时间复杂度

math - 嵌套 For 循环的运行时间估计/大 O 表示法