【问题标题】:Algorithm Analysis - Asymptotic analysis算法分析 - 渐近分析
【发布时间】:2014-10-28 15:36:34
【问题描述】:

您好,我已经开始学习算法分析了。在这里,我对渐近分析有疑问。 假设我有一个函数 f(n) = 5n^3 + 2n^2 + 23。 现在我需要为上述函数找到 Big-Oh、Big-Omega 和 Theta 符号,

Big-Oh: 
    f(n) <= (5 + 2 + 23) n^3  // raising all the n's to the power of 3 will give us a value which will be always greater than f(n)
    f(n) <= 30n^3
    f(n) belongs to Big-Oh(n^3)

Big-Omega:
    n^3 <= f(n)
    f(n) belongs to Big-Omega(n^3)

Theta: 
    n^3 <= f(n) <= 30 n^3 
    f(n) belongs to Theta ( n^3)
So here, 
    f(n) belongs to Big-Oh(n^3)
    f(n) belongs to Big-Omega(n^3)
    f(n) belongs to Theta(n^3)

对于任何多项式,就像这样,Oh、Omega 和 Theta 表示法的增长顺序是相同的(在我们的例子中是 n^3 的顺序)。 当所有符号的增长顺序都相同时,那么用不同的符号显示它们有什么用以及确切的位置 可以用吗?如果可能的话,请给我一个实际的例子。

【问题讨论】:

    标签: algorithm data-structures computer-science asymptotic-complexity


    【解决方案1】:

    Big theta (Θ) 是当我们的 上限 (O) 和 下限 (Ω) 相同时,换句话说,它是一个紧密的界限。这是同时显示 OΩ(或者同时显示三个)的原因之一。

    为什么这很有用?因为 Θ 是一个 紧束缚 - 它比 O 强得多。使用 O 你可以说上面是 O(n^1000) 并且你在技术上仍然是正确的。很多时候 O != Ω 而你没有那么紧的界限。

    那么为什么我们通常谈论O呢?好吧,因为在大多数情况下,我们对算法的上限(最坏情况的)感兴趣。有时我们根本不知道 Θ,而是使用 O。同样重要的是要注意,许多人只是滥用这些符号,不完全理解它们和/或根本不够精确,并在可能出现 Θ 的地方使用 O用过。

    例如,快速排序没有严格限制(除非我们专门讨论最佳/平均或最坏情况分析),因为它在最佳和平均情况下为 Ω(nlogn),但在最坏情况下为 O(n^2)案子。另一方面,归并排序既是Ω(nlogn)又是O(nlogn),因此它也是Θ(nlogn)。

    总而言之,这都是理论上的,因为在实践中快速排序在大多数情况下更快,因为您通常不会遇到最坏的情况,并且快速排序完成的操作更容易。

    【讨论】:

      【解决方案2】:

      在您给出的示例中,执行时间是已知的并且似乎是固定的。所以它在 O(n^3), Ω(n^3) 中,因此在所有情况下都在 Θ(n^3) 中。

      但是,对于算法,执行时间可能(而且并非很少)取决于运行算法的输入。

      例如:在最坏的情况下搜索链表中的键需要遍历所有列表成员,这是线性时间。 在最好的情况下,您当时正在寻找的关键是在列表的最开始,这是恒定的时间。 所以算法在 O(n) 和 Ω(1)=O(1) 中。没有有效的 f(n) 来指定该算法的 Θ(f(n))。

      【讨论】:

      • 有没有什么办法可以得到一些实际的问题和解决方案,以更好地理解它或一些资源,我可以从基础层面得到一些理解!,我对此很陌生,不知道从哪里开始,有时事情会变得混乱。谢谢
      【解决方案3】:

      以上函数运行时间可以通过以下方式计算

      • 是 omega 和 n 的大 o 吗? 5n^3+2n^2+23 >=cn 5n^2+2n+23/n >= c 随着 n 的增长并且趋于无限 这样的常数 c 可以存在小于或等于 到不等式的左侧,所以函数运行 时间是 n 的欧米茄。 5n^2+2n+23/n
      • 是 omega 和 n ^3 的 Big o 吗? 5n^3+2n^2+23 >=cn^3 5 + 2/n + 23/n^3 >=c 这个不等式成立所以它是 n^3的欧米茄。 5 + 2/n + 23/n^3

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-04
        • 2021-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-30
        相关资源
        最近更新 更多