performance - 当 f(n) = n^.1 且 g(n) = log(n)^10 时,f(n) = Ω(g) 吗?

标签 performance math big-o execution-time

有人告诉我“任何指数都胜过任何对数”。

但是当指数在0和1之间时,对数的执行时间不是增长得更快吗?所以按照这个逻辑,f = O(g)

我很难选择是遵循我的直觉还是遵循别人告诉我的,但我得到的告诉可能并不完全准确。

最佳答案

让我们在这里尝试一些数学。一个重要的事实是对数函数是单调递增的,这意味着如果

log f(x) ≤ log g(x)

然后

f(x) ≤ g(x)

现在,让我们看看它在这里做了什么。我们有两个函数,x0.1 和 log10 x。如果我们获取他们的日志,我们会得到

log (x0.1) = 0.1 log x

log (log10 x) = 10 log log x

由于 log log x 的增长速度比 log x 慢得多,直观上我们可以看到函数 x0.1 最终将超过 log10 x。

现在,让我们将其形式化。我们想要找到 x 的某个值,使得

x0.1 > log10 x

为了让数学更容易,我们假设这些是以 10 为底的对数。如果我们假设对于某些 k,x​​ = 10k,我们会得到

(10k)0.1 ≥ log10 10k

100.1 k > log10 10k

100.1 k > k

现在,取 k = 100。现在我们得到了

100.1 * 100 > 100

1010 > 100

这显然是正确的。由于两个函数都是单调递增的,这意味着对于 x ≥ 10100,确实

x0.1 > log10 x

这意味着 x0.1 = O(log10 k) 成立。

希望这有帮助!

关于performance - 当 f(n) = n^.1 且 g(n) = log(n)^10 时,f(n) = Ω(g) 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7342613/

相关文章:

php - 性能方面 : Is it better to have many tiny ajax php controller scripts or one large one?

sql - 如何在 SQL Server 数据库表中使用 X 和 Y 网格坐标选择一圈数据?

c# - 从 3D 到 2D 的平滑过渡

algorithm - 更快的数学算法牺牲准确性

java - 具有指数条件的大 O/时间复杂度

linux - 如果 linux 中的任何 PID 超过某个限制,如何发出警报?

sql - 验证列是否为空值

c - 为什么这个算法是 O(N)?

performance - 点积与直接矢量分量在着色器中的总和性能

c - 此代码的大 O 符号