【问题标题】:What exactly is the difference between big oh and omega notation?big oh 和 omega 符号之间到底有什么区别?
【发布时间】:2016-03-01 19:06:55
【问题描述】:

我知道 big oh 表示上限,omega 表示下限,但大多数地方我只看到 big oh 符号。

例如。在线性搜索算法中,最坏的情况是大 oh(n)。 但是,搜索没有。可以在第一个位置找到。所以不行。输入为 1。因此,这是最好的情况。所以,我们可以把它写成 big omega(1)。但是我已经看到,在很多地方,big oh 也用于最佳情况,但我不知道为什么。

我知道这两种符号之间的理论区别。但是,我实际上无法理解它。

【问题讨论】:

  • “输入数为 1”是什么意思?你在哪里见过 big oh 用于最好的情况?
  • 我在很多地方看到过,包括维基百科。和不。输入意味着没有。周期......这是一个错误。
  • 链接?解释一个例子总是更容易。输入数绝不意味着周期数。 'N' 几乎总是用来表示输入的大小

标签: c algorithm data-structures asymptotic-complexity


【解决方案1】:

有三个重要的复杂性类别:

  1. O,Big-O = 宽松的上限
  2. Ω, Omega = 宽松的下限
  3. Θ, Theta = 严格的上下界

重要的是要意识到 O 和 Ω 是松散的界限。它们不一定是最佳的。任何算法都有无限个上限和无限个下限。

例如,可以说线性搜索的上限为 O(n2),下限为 Ω(1)。我们知道它的实际复杂性介于这些界限之间。但是,通常情况下,陈述非最佳界限通常没有帮助。这些界限是正确的,但没有用。

我们通常想要知道最小上限和最大下限。如果你说线性搜索是 O(n2),我可以改进你的答案,说它不仅是 O(n 2),也是 O(n)。这是一个较小的上限,因此更有用。

不仅如此,您还必须决定是查看最坏情况平均情况还是最佳情况。除非另有说明,否则复杂性分析通常着眼于最坏的情况。因此,虽然您可能会在 1 步中偶然发现要查找的项目,但线性搜索的最坏情况是必须查看所有 n 个项目。 最佳情况复杂度为 O(1),但最坏情况复杂度为 O(n)。

如果你能证明 O = Ω——最小的上界和最大的下界是相同的——那么你现在知道 Θ。在最坏的情况下,线性搜索的边界为顶部的 O(n) 和底部的 Ω(n),因此其最坏情况的复杂度正好是 Θ( n).

大多数说算法是 O(whatever) 的人实际上应该使用 Θ(whatever)。如果你知道边界是严格的上下边界,那么 Θ 比 O 更好。但大多数人也不记得这些错综复杂的东西,所以 Big-O 已经成为 Theta 的一个懒惰的后备方案。

【讨论】:

  • 我认为,您在(否则很好的)解释中混合了 问题算法 的复杂性。在第二段(例如......)中,您谈论问题的复杂性,而在第四段(不仅如此......)中,您谈论特定的算法和输入。
  • @Ctx 搜索是个问题。线性搜索是一种算法。我想我在这里只谈论算法。我忽略了什么吗?
  • 好的,我将“线性搜索”理解为一个问题,而不是一个算法。但是再想一想,如果有人在 O(n) 之外实现“线性搜索”,它可能就不能再被称为“线性搜索”了,所以你在这里可能是正确的。
  • 好的。我接到你了。但是,我想知道线性搜索算法的最佳情况是什么。大哦(1)还是欧米茄(1)?
  • 两者。最好的情况正好是 1,即 Θ(1) 和 O(1)。
【解决方案2】:

我知道这两种符号之间的理论区别。但是,我实际上无法理解。

Big O 在描述算法时使用更广泛,因为了解算法的运行情况通常更有用,因此工程师可以为任何情况做好准备。

然而,Big Omega 通常不如 Big O 有用。虽然很高兴知道算法 可以运行多快,但在设计软件时,工程师需要再次了解最坏的情况,为任何情况做好准备。

【讨论】:

    【解决方案3】:

    当人们说运行时间为 O( f(n) ) 时,他们的意思是运行时间属于 O( f(n) ) 的函数类。

    即 f(n) =0

    在您的线性搜索的具体问题中,最坏的情况确实需要一些时间,即 O(N)。

    最好的情况需要固定的时间 - T = k。但是 k 属于 O(1) 类(因为 k

    话虽如此,人们松散地使用 O( f(N) ) 来表示它与 f(N)“有点成比例”。

    【讨论】:

      猜你喜欢
      • 2014-03-30
      • 1970-01-01
      • 1970-01-01
      • 2016-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-07
      相关资源
      最近更新 更多