算法中的大O复杂性

时间:2016-09-06 15:13:45

标签: algorithm big-o

我想订购条款,使每一个都是下一个的大O

√n√logn

√nlog⁡(n ^ 30)

n /〖(logn)〗^ 2

〖〗16 ^(log√n)

任何人都可以帮忙找到订单吗?

4 个答案:

答案 0 :(得分:2)

声明:16*log(sqrt(n))位于O(n/(log(n))^2)

根据Wikipedia的定义,f(x)位于O(g(x)) iff lim sup abs(f(x)/g(x)) < infinity,n接近无穷大。如果存在限制,则lim sup成为lim,并且使用l&#39; Hospital的规则(假设前提条件已满足,请参阅Wikiepdia),我们有:

lim abs(f(x)/g(x)) = lim ((8*log(n))/n) * log(n) * log(n)
= lim (8*(log(n))^3)/n = lim (24*(log(n))^2)/n 
= lim (48*log(n))/(n^2) = lim (24/n^3) = 0

在这里,我将l&#39; Hopstial的规则应用了三次以摆脱(log(n))^ 3。因此,林存在并且因此等于权利,并且根据定义,权利要求如下。

答案 1 :(得分:1)

我假设你的意思是以下四个功能:

  1. (n*log(n))^(1/2)
  2. n^(1/2)*log⁡(n^30) = 30*n^(1/2)*log(n)
  3. n/log(n)^2
  4. 16*log(n^(1/2)) = 8*log(n)
  5. 您希望了解8*log(n) = O(n/log(n)^2)

    的原因

    (以下内容并非完全严格,但只是提供一些直觉,这是真的。)

    直观地说,您可以首先显示log(n) = O(n^(1/k))任何常量k>0。这也意味着log(n)^2 = O(n^(1/k)),因为不平等log n < n^(1/k)的两边都会产生log(n)^2 < n^(2/k),而2/k仍然是常数。

    接下来,考虑平等n^(1/2) == n/n^(1/2)。如果使用较小的根,比如立方根,会发生什么?在左侧,您的功能会变得更慢。在右边,比率增长很快,因为你要除以“更小”的东西,因此足够大nn^(1/3) < n/n^(1/3)。对于较大的常量k也是如此,因此通常n^(1/k) = O(n/n^(1/k)

    最后,我们会做一些手工操作并注意,由于log(n)^2比任何根增长得更慢更多,您可以说以下内容:

    log(n)^2 = O(n^(1/k)) = O(n/n^(1/k)) = O(n/log(n)^2)
    

    将所有内容乘以常数8不会影响上述链,因此我们最终可以(非严格地)得出结论

    8*log(n)^2 = O(n/log(n)^2) 
    

答案 2 :(得分:0)

如果您了解微积分,则可以执行以下检查:

1)限制(№2/№1)=(应该是无穷大)

2)限制(№3/№2)=(应该是无穷大)

3)限制(№4/№3)=(应该是无穷大)

其中№i - i-th表达

答案 3 :(得分:0)

n背后的直觉大于log n非常清楚,所以让我们对此严格要求。

  limit n->infinity (16 log(sqrt(n))/(n / (log n)^2)
= limit n->infinity  8 (log n)^3 / n = 0

如果我们证明最后的平等,那么顺序如下。我们可以反复使用l'Hospital的规则来获取:

  limit n->infinity  8 (log n)^3 / n
= limit n->infinity  24 (log n)^2 / n
= limit n->infinity  48 (log n) / n
= limit n->infinity  48 / n = 0