我有两个算法A和B.
算法A的时间复杂度为 O (log n),B的时间复杂度为 O ( n )。
现在我有一个时间复杂度 O 的新算法C(√ n )我需要(数学上)证明算法A或算法B是否渐近接近算法C。
对此的任何帮助都非常感谢。谢谢!
答案 0 :(得分:4)
n的平方根是否接近O(logn)或O(n)?
(我在下面假设你实际上是指Θ,而不是 O (感谢WhatsUp指出那个)。否则,这些只是上限,你不能说上限界限的功能差异。)
让我们首先从特定函数 log(n),√n和 n 开始。显然, log(n)≤√n≤n(你可以使用L'Hospital的规则来看这个)。所以问题是 n - √n是否大于或小于√n - log(n)。
将L'Hospital的规则应用于
lim n→∞(n - √n)/(√n - log(n)),
你可以看到这是
lim n→∞(1 - 0.5 /√n)/(0.5 /√n - 1 / n)= lim n→∞(n - 0.5√n)/(0.5√n - 1)= lim n→∞(n - 0.5√n)/(0.5√n)=∞。
所以√n更接近 log(n)而不是 n 。
使用Θ,计算基本相同,但更繁琐。你需要争辩说每个函数都在两个常量之间,并相应地使用上面和下面的函数。尽管如此,如果 f , g 和 h 是Θ(log(n)),Θ(√n)和Θ(n),然后足够大 n , g(n) - f(n)&lt ;< h(n) - g(n)。