大哦和欧米茄符号之间的区别究竟是什么?

我知道,大哦是上界,欧米茄是下界,但大多数地方我只看到很大的哦符号。

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

我知道两种符号之间的理论差异。 但是,我几乎无法理解它。


有三个重要的复杂类:

  • O,Big-O =一个松散的上界
  • Ω,Ω=一个松散的下界
  • Θ,Theta =严格的上限和下限
  • 认识到O和Ω是松散的边界是很重要的。 它们不一定是最佳的。 任何算法都有无限数量的上界和下界数量无限。

    例如,可以说线性搜索具有O(n2)的上界和Ω(1)的下界。 我们知道它的实际复杂性在于这些范围之间。 然而,通常情况下,状态非最优边界通常不会有帮助。 这些界限是正确的,但没有用处。

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

    不仅如此,而且您必须决定是否查看最差情况平均情况最佳情况 。 除非另有说明,否则复杂性分析通常会查看最坏的情况。 所以,虽然你可能偶然发现了你要找的物品,但是线性搜索的最坏情况是不得不查看所有n个物品。 最好的情况复杂度是O(1),但最坏的情况是O(n)。

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

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


    我知道两种符号之间的理论差异。 但是,我几乎无法理解它。

    大O在描述算法时被广泛使用,因为知道算法运行得有多糟,所以工程师可以为任何情况做好准备。

    然而,大欧米茄通常并不像大O那样有用。虽然知道算法运行的速度有多快,但当设计软件工程师需要知道最坏情况的情况时,再次为任何情况做好准备。


    当人们说运行时间是O(f(n))时,它们意味着运行时间属于O(f(n))的函数类。

    即,对于一些c和每个n> = 0,f(n)<= cn

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

    最好的情况将需要不变的时间 - T = k 。 但是k属于类O(1)(因为对于某些+ ve Epsil,k <ε+ k)。 所以我可以说,在最好的情况下,运行时间是O(1)。

    也就是说,人们用O(f(N))松散地表示它与f(N)“有些成正比”。

    链接地址: http://www.djcxy.com/p/40179.html

    上一篇: What exactly is the difference between big oh and omega notation?

    下一篇: Time complexity of this function?