【问题标题】:How to add Big O and Big omega如何添加大 O 和大欧米茄
【发布时间】:2012-09-15 06:40:26
【问题描述】:

如果一个算法有两个子算法,当子算法A1对给定输入最好的情况下,它是子算法A2的最坏情况。我怎样才能找到整体算法的复杂性? 我的意思是Ω(N)+ O(N)=? 我知道算法是否按顺序执行顺序,总体复杂度为 O(N)+ O(N),嵌套顺序为 O(N)* O(N)。

请告诉我在这两种情况下,是按顺序还是按嵌套顺序

【问题讨论】:

  • 很难说你的问题是什么。
  • 最佳情况和最坏情况与大 O 和大 Omega 不同。最佳情况/最坏情况/平均情况是对算法的分析。分析产生一个函数。 big O 和 big Omega 是一组函数。每个大 O/大欧米茄/大 Theta 都可以应用于每个最佳/最差/平均案例分析。我试图在回答 this question 的其他人中解释这个问题
  • 简单,如何增加两种算法的运行时复杂度?当一个人的复杂性是大 O 而另一个人的复杂性是大 Omega? Ω() + O()=?

标签: algorithm analysis asymptotic-complexity big-o


【解决方案1】:

如果您的算法包括一个需要(例如)O(N) 时间的操作和另一个需要 O(N^2) 时间的操作,那么总体复杂度是 O(N^2)。没有像 O(N^2 + N) 这样的东西。 Ω() 也是如此。这回答了您关于“顺序执行顺序”的问题。

如果您的算法包含 N 个操作,每个操作都需要 O(N) 时间,那么总体复杂度为 O(N^2)。 Ω() 也是如此。您只需将多项式相乘,并采用随着 N 增加而增长最快的项。这回答了您关于“嵌套执行顺序”的问题。

【讨论】:

  • 如果受过良好教育的读者在这篇文章中发现任何不正确的地方,请纠正我!
  • O(N^2+N) 作为集合存在但 O(N^2+N)=O(N)
【解决方案2】:

本质上是 Ω(N) + O(N)= Ω(N)。因为 O(N) 表示 Ω(N) 的更低(或最多相同)阶。相加时,低位可以省略。

【讨论】:

  • sets 的 + 运算符是什么? Omega和O都是函数集,SET + SET是什么?我不熟悉它的标准定义:|
  • 这是对符号的轻微滥用。 Ω(N) + O(N) = Ω(N) 表示如果函数 f 在 Ω(N) 中,g 在 O(N) 中,则 f+g 在 Ω(N) 中。
猜你喜欢
  • 1970-01-01
  • 2011-10-04
  • 2014-11-14
  • 1970-01-01
  • 2022-07-16
  • 1970-01-01
  • 2017-08-12
  • 2013-03-29
  • 1970-01-01
相关资源
最近更新 更多