订购增长函数

时间:2013-09-10 17:03:49

标签: time-complexity

按照从最有效到最复杂的顺序列出以下增长函数:

  1. n日志 2 (N)+ N 2
  2. 名词 2 -nlog(n)的
  3. n日志(n)的
  4. 名词 2 的log(n)
  5. 2 名词 + 100N 4
  6. 名词 3 -100n 2
  7. 据我所知,通过n的强大功能,该功能被认为是最有效或最复杂的。但是,我不确定当有多个日志引用时如何继续。

    我知道(5)是最复杂的,因为它具有指数n并且将以指数方式增加。 (6)在复杂性方面落后于它,因为它是多项式的。

    现在我感到困惑。我认为(1)将在6之前,因为它的n 2 的值被添加到log函数中。然后(2)减去对数函数。然后(4)乘以它。这使得3对最有效,具有双对数。

    我的猜测,最复杂的效率最高:
    3
    4
    2
    1
    6
    5

    这是否接近正确或者我是否在左外地?

2 个答案:

答案 0 :(得分:2)

记住所有a的log(n) a ∈O(n)。您可以使用它将所有给定函数放入多项式/指数类别中:

  1. n 2 + n•log 2 (n)∈ O(n 2
  2. n 2 - n•log(n)∈ O(n 2
  3. n•log(n)∈ O(n•log(n)) ∈O(n 2
  4. n 2 •log(n)∈ O(n 2 •log(n)) ∈O(n < SUP> 3 )
  5. 100n 4 + 2 n O(2 n
  6. n 3 - 100n 2 O(n 3
  7. 现在您知道{1,2,3}&lt; {4,6}&lt; 5.

    {1,2,3} 内,n•log(n)是最小的,因为它是< n^2。显然n^2 - x&lt; n^2 + y,因此2小于1.

    {4,6} n^2•log(n) = n•n•log(n) < n•n•(n-100) = n^3-100n^2内,自log(n) < n-100以来为大n。

    所以正确的顺序是3&lt; 2&lt; 1&lt; 4&lt; 6&lt; 5。

答案 1 :(得分:0)

总是试着找到增长最快的功能:顺序是n ^ n&gt;&gt; N! &GT;&GT; a ^ n&gt;&gt; n ^ a&gt;&gt; n * log(n)&gt;&gt; n&gt;&gt; log(n)&gt;&gt;日志(日志(N))。如果将这些函数相乘,则n * log(n)* log(n)的增长速度快于n n * log(n),因此顺序为:nlog(n)&lt; n ^ 2-nlog(n)&lt; nlog ^ 2(n)+ n ^ 2&lt; n ^ 2log(n)&lt; N R个-100n ^ 2。虽然我会说,n ^ 2-nlog(n)类似于nlog ^ 2(n)+ n ^ 2),因为增长最快的是n ^ 2,所以实际上日志并不有趣。