0

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

  1. nlog 2 (n)+n 2
  2. n 2 -nlog(n)
  3. nlog(n)
  4. n 2对数(n)
  5. 2 n +100 n 4
  6. n 3 -100 n 2

我知道该功能被 n 的压倒性功能认为是最有效或最复杂的。但是,当有多个日志引用时,我不确定如何进行。

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

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

我的猜测,从最复杂到最有效:
3
4
2
1
6
5

这是接近正确的地方还是我在左场?

4

2 回答 2

2

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

  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 3 )
  5. 100n 4 + 2 nO(2 n )
  6. n 3 − 100n 2O(n 3 )

现在您知道 {1,2,3} < {4,6} < 5。

{1,2,3}内,n•log(n)是最小的,因为它是< n^2。显然n^2 - x< 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 < 2 < 1 < 4 < 6 < 5。

于 2013-09-10T17:27:57.713 回答
0

只是总是试图找到增长最快的函数:顺序是 n^n >> n!>> a^n >> n^a >> n*log(n) >> n >> log(n) >> log(log(n))。如果将这些函数相乘,同样 n*log(n)*log(n) 比 nn*log(n) 增长得快,因此顺序为:nlog(n) < n^2-nlog(n) < nlog^2(n) + n^2 < n^2log(n) < n^-100n^2。虽然我会说 n^2-nlog(n) 类似于 nlog^2(n) + n^2) 因为增长最快的是 n^2 所以实际上日志并不有趣。

于 2013-09-10T17:17:36.613 回答