我知道如何比较不同算法的运行时间。
有时它显而易见,有时它需要简化,有时会分割和使用L'Hopital的规则来查看它是否收敛到常数或0。
但是,如果它们是复杂的形式,你如何比较它们?
例如,您将如何比较
和n
?
当然,我想要一个严格的证据。
答案 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)会更大。