找出算法的运行成本
Posted
技术标签:
【中文标题】找出算法的运行成本【英文标题】:Find the running cost of the algorithm 【发布时间】:2015-05-08 03:31:12 【问题描述】:我无法解决以下重复问题
T(n) = 3T(n/5) + lg^2 n
我的工作: 应用主定理
a=3 b=5
n^log5^3n= n^log^0.65
这导致n^0=1
这与 log^2n
无法比较
我也尝试过使用递归树,但它太复杂了。请帮忙。
【问题讨论】:
指数中的n怎么了? 【参考方案1】:T(n) = a*T(n/b) + f(n) 这里,
a = 3 b = 5 f(n) = (lg(n))^2
现在,根据大师定理的第一种情况,
如果对于某个常数 e > 0,f(n) = O(n^logb(a−e)),则 T(n) = Θ(n^logb(a))。
让我们取 e = 3-sqrt(5) 因此,n^logb(a−e) = n^log5(3-(3-sqrt(5))) = n^log5(sqrt(5)) = n^0.5 = sqrt(n)。
所以,我们现在必须比较 (lg(n))^2 和 sqrt(n)。 如果我们绘制graphs of these two functions,我们可以清楚地观察到 (lg(n))^2 = O(sqrt(n))。
由于 f(n) = O(n^logb(a−e)) 对于 b = 5,a = 3 和 e = 3-sqrt(5), T(n) = Θ(n^logb(a))
=> T(n) = Θ(n^0.68)
【讨论】:
以上是关于找出算法的运行成本的主要内容,如果未能解决你的问题,请参考以下文章