为什么以下函数序列按渐近增长率排序?

时间:2012-03-03 01:24:19

标签: algorithm sorting time-complexity

以增加Θ顺序排列以下表达式。如果两个函数具有相同的增长顺序,则应说明这一事实。

  

n log n,n -1 ,log n,n log n ,10n + n 3/2 ,π n ,2 n ,2 log n ,2 2 log n ,log n!< / p>

有人可以向我解释为什么以下答案是正确的吗?

  

n -1 «log n«2 log n «n log n = log n! «10n + n 3/2 «n log n «2 n = 2 2 log n «π n

2 个答案:

答案 0 :(得分:6)

你应该使用以下事实:

lim(n->∞) f(n)/ g(n) = 0  this gives you Θ(f(n)) < Θ(g(n))
lim(n->∞) f(n)/ g(n) = c; c > 0 this gives you Θ(f(n)) = Θ(g(n))
lim(n->∞) f(n)/ g(n) = ∞  this gives you Θ(f(n)) > Θ(g(n))

现在使用你得到:

lim(n->∞) n^−1 / log n = lim(n->∞) 1 / (n * log n) = 0.

这会立即为您提供Θ(n^−1) < Θ(log n)

继续剩下的。

对于某些计算,您可能会发现L'Hôpital's rule有帮助。

答案 1 :(得分:2)

所以自从我考虑这些概念已经有很长时间了(如果这是错误的话,我相信其他人会纠正我),但我不同意你的回答。首先关闭theta意味着该函数在上方和下方绑定。这意味着10n + n3 / 2,2n和πn都是相同的theta类。 log n,2log n,22log n也都是同一个类。要查看n log n与log n是同一个类!使用stirling's approximation。因此,你得到:

log n = 2 log n = 22 log n ≪ n−1 = 10n + n3/2 = 2n = πn ≪ n log n = log n! 

现在,如果'n3 / 2'表示n ^(3/2)而不是3/2 * n,则顺序为:

log n = 2 log n = 22 log n ≪ n−1 = 2n = πn ≪ n log n = log n! ≪ 10n + n3/2