函数的复杂度T(N)= T(n / 2)+ 2 ^ n

时间:2015-03-06 11:46:06

标签: algorithm master-theorem

我是一名学生在大学学习算法课程。我知道如何应用一些递归技术来查找更简单函数的运行成本,但此问题中的2^n给我带来了麻烦。这是我尝试应用主定理

a=1b=2 n^log2(1)= n^0.65

这导致n^0=1我知道它必须是f(N) 2^n的多项式时间,但我不知道它与2^n的比较。< / p>

我也尝试使用递归树,但它太复杂了。

2 个答案:

答案 0 :(得分:2)

你可以应用描述here的主定理的第三种情况,因为f(n)等于Ω(nloga)。

Here, 
f(n) = 2^n , and
Ω(n^log 1) = Ω(1)

2^n = Ω(1),因为对于某些常数c> 0且所有足够大的n,2 ^n≥c* 1.

所以T(n)= f(n)
T(n)= O(2 ^ n)

答案 1 :(得分:1)

如果没有主定理,这很容易做到:

T(n) = T(n / 2) + 2^n)
     = T(n / 4) + 2^(n / 2) + 2^n
     = ...
     < 2^0 + 2^1 + ... + 2^n
     = [2^(n + 1) - 1] / (2 - 1) (sum of a geometric progression formula)

=> T(n) = O(2^(n + 1)) = O(2*2^n) = O(2^n)