比较复杂形式表示的算法运行时间

时间:2013-09-19 23:38:49

标签: performance algorithm math

我知道如何比较不同算法的运行时间。

有时它显而易见,有时它需要简化,有时会分割和使用L'Hopital的规则来查看它是否收敛到常数或0。

但是,如果它们是复杂的形式,你如何比较它们?

例如,您将如何比较 enter image description here

n

当然,我想要一个严格的证据。

2 个答案:

答案 0 :(得分:0)

在此示例中,第一个简化是删除sqrt(2)-0.4幂。这种力量非常接近1,几乎没有什么区别。如果您的比较需要这种区别,请道歉。这可能有一个取幂规则,但我记不起我的数学了。

接下来是使用日志规则来分解 log 96 n

等效于 log 2 n / log 2 96 。现在你已经 2 了前者的力量。 log 2 96 只是一个常数(约6.585)。您可以将其考虑在内(因为当n增加时它变得无关紧要),或者将其保留并使用另一个日志规则。让我们留下来:

log 2 n / log 2 96 变为 log 2 n (日志<子> 2 96) -1

整个过程简化为 n (log 2 96)-1 。或者,如果您进行了额外的简化,您将获得 2 ^ log 2 n ,这只是 n

由于你想比较 n ,所以看起来第一个结果更相关,大约 0.15n 。< / p>

答案 1 :(得分:0)

每个问题都是特别的。在这种情况下,假设n = 96 ^ k且96 = 2 ^ m。

n vs表达式可以改写为:

2^(m*k) vs 2^(k ^(sqrt(2) - 0.4))

由于2,m,k,sqrt(k)-0.4都是> 0,比较变为

(m * k) vs k ^(sqrt(2) - 0.4)

m vs k ^(sqrt(2) - 1.4) 

但是m = log 96到base 2是固定的(6.585)而k是无界的

因此表达式(RHS)会更大。