解决T(n)= 3T(n / 5)+ T(n / 2)+ 2 ^ n的重现

时间:2018-02-14 17:04:30

标签: algorithm time-complexity

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

c = 2^n and then for the next c I get ' 3 * 2^(n/5) + 2^(n/3)

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

2 个答案:

答案 0 :(得分:1)

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

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的大小非常大时,常量是无关紧要的。

答案 1 :(得分:0)

您可以简化案例。随着T(n)的增加,我们知道T(n/2) > T(n/5)。因此,T(n) < 4T(n/2) + 2^n。现在,您可以使用主定理,并说出T(n)=O(2^n)。另一方面,如果没有此替换,因为2^n中存在T(n),我们可以说T(n) = \Omega(2^n)。因此,T(n) = \Theta(2^n)