【问题标题】:worst-case, big o, big theta and big omega最坏情况、大 o、大 theta 和大 omega
【发布时间】:2021-02-10 14:44:52
【问题描述】:

在最坏的情况下,我很难理解这 3 个符号的区别。

big o = upperbound 的最坏情况,永远不会跑得更快。

big omega 的最坏情况 = 下限,在最坏的情况下永远不会运行得更快?

big theta = 介于下限和上限之间的最坏情况,在最坏情况下会在这些界限之间运行吗?

编辑:

抱歉,不清楚。我不确定我对大 o 的最坏情况、大 omega 的最坏情况和大 theta 的最坏情况的理解是否正确。我在“=”之后写的就是我认为的。

【问题讨论】:

  • 究竟你不明白什么?
  • 抱歉不清楚。我不确定我对大 o 的最坏情况、大 omega 的最坏情况和大 theta 的最坏情况的理解是否正确。我在“=”之后写的就是我认为的。
  • 请通过编辑为您的问题添加所有说明

标签: algorithm analysis


【解决方案1】:

您概述的内容似乎总体上是正确的。一个重要的区别是case和bound之间的区别。

案例是当前正在考虑的输入类别。您可以考虑您的算法表现最差的输入类别,或者您的算法表现最好的输入类别。

边界是一个函数,它说明算法使用的资源(通常是时间或空间)如何随着输入的变化而变化。上限和下限是典型的。

您可以随意混合和匹配大小写和边界。

也许您想知道算法最坏情况的上限,以便了解在最坏情况下缩放会是什么样子。这可以让您确信无论使用方式如何,您的解决方案都能很好地扩展

也许您想知道最坏情况的下限,以了解您的解决方案是否尽可能快 - 如果它的缩放行为对于您要解决的问题是最佳的。例如,我们知道基于比较的整数排序是 Omega(n log n),没有任何额外的假设。如果你写一个排序过程,你是否达到了这个界限,还是你的方法更慢?

最佳案例分析当然也有其用途。您还可以通过对给定参数的输入进行一些分布来讨论平均情况分析,并找到相应的界限;一种类似的分析是摊销分析,其中您的“案例”实际上是一系列操作。

【讨论】:

  • 但是如果我们有一个算法在最坏的情况下采用 theta(n^3)。这是否意味着上限和下限为n^3?
  • @Busquets_90 是的,完全正确。 f 是 Theta(g) 当且仅当 f 既是 Big-O(g) 又是 Omega(g)。这正是 Theta 的定义方式,或者至少可以这样定义,并且任何其他定义都是等价的。
猜你喜欢
  • 1970-01-01
  • 2018-01-23
  • 1970-01-01
  • 2022-07-16
  • 2013-05-07
  • 2014-11-23
  • 2015-05-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多