【问题标题】:complexity of the function T(N)=T(n/2)+2^n函数复杂度 T(N)=T(n/2)+2^n
【发布时间】:2015-05-08 00:26:50
【问题描述】:

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

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

这导致n^0=1 我知道它必须是f(N) 的多项式乘以2^n 但我看不出这与2^n 有什么可比性。

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

【问题讨论】:

    标签: algorithm master-theorem


    【解决方案1】:

    您可以应用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)

    【讨论】:

    • 我记错了,案例3可以申请。
    • 你能帮我解决这个困惑吗?我读到,只有当 n^loga(b) 可以表示为 n^loga(b)+^E 或 n^loga( b)-^E 其中 E > 0 否则不适用。但我没有在您的解决方案中看到这一点。
    • @aneena 坦率地说,我不记得 E 因素发挥作用的任何重复关系。我建议您尝试我链接到的 pdf 中的一些问题,看看是否在任何地方使用了 E。
    【解决方案2】:

    没有主定理也很容易做到:

    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)
    

    【讨论】:

    • 我无法解决以下递归 T(n) = 3T(n/5) + lg^2 n 我的工作:应用主定理 a=3 b=5 n^log5^3n= n^log^0.65 这导致 n^0=1 这与 log^2n 无法比较 我也尝试使用递归树,但它太复杂了。请帮助
    • @aneena - 这完全是另一个问题。请为它提出一个不同的问题,并确保展示你的作品,以免它被关闭。
    猜你喜欢
    • 2021-05-05
    • 2013-07-16
    • 2015-08-04
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    • 2012-09-19
    • 2020-12-25
    • 2016-04-04
    相关资源
    最近更新 更多