找出算法的运行成本

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))^2sqrt(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)

【讨论】:

以上是关于找出算法的运行成本的主要内容,如果未能解决你的问题,请参考以下文章

如何找到成本最高的路径

使用 adwords api 管理广告的成本

Tensorflow 自动编码器成本没有降低?

成本更新和算法

K-Means聚类

修改 Dijkstra 算法以处理具有多个可能成本的边