【问题标题】:Ordering Growth Functions排序增长函数
【发布时间】:2013-09-10 17:03:48
【问题描述】:

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

  1. nlog2(n)+n2
  2. n2-nlog(n)
  3. nlog(n)
  4. n2log(n)
  5. 2n+100n4
  6. n3-100n2

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

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

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

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

这是否接近正确或我在左场?

【问题讨论】:

    标签: time-complexity


    【解决方案1】:

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

    1. n2 + n•log2(n) ∈ O(n2)
    2. n2 − n•log(n) ∈ O(n2)
    3. n•log(n) ∈ O(n•log(n)) ∈ O(n2)
    4. n2•log(n) ∈ O(n2•log(n)) ∈ O(n3)
    5. 100n4 + 2nO(2n)
    6. n3 − 100n2O(n3)

    现在您知道 {1,2,3}

    {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】:

      总是试图找到增长最快的函数:顺序是 n^n >> n! >> a^n >> n^a >> n*log(n) >> n >> log(n) >> log(log(n))。如果将这些函数相乘,同样是 n*log(n)*log(n) 比 n n*log(n) 增长得快,因此顺序为:nlog(n)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多