【问题标题】:An algorithm worst case O(n²) is better than a Ω(n log n) worst case?算法最坏情况 O(n²) 优于 Ω(n log n) 最坏情况?
【发布时间】:2021-11-12 00:09:27
【问题描述】:

算法是 Ω (n log n) 那么它比 O(n²) 好,对吗?

【问题讨论】:

  • Big O 表示法和 Big Ω 表示法的区别在于 Big O 用于描述算法的最坏情况运行时间。但是,另一方面,Big Ω 表示法用于描述给定算法的最佳情况运行时间。因此,对于具有 Ω (n log n) 的算法来说,最坏的情况可能是任何情况。
  • 这就像在问,为选项 A 支付 >= 10 美元是否比为选项 B 支付
  • 您知道 Ω (n log n) 算法的最佳可能运行时间和 O(n²) 算法可能的最差运行时间。你真的没有办法比较两者。
  • @JerryJeremiah 这是错误的,大 O 可以用于最佳、最坏或平均情况,大 Ω 也可以。请看this Q&A
  • @JerryJeremiah 您将“上限”与“最坏情况”混为一谈,将“下限”与“最佳情况”混为一谈,但这些是完全不同的概念。

标签: c


【解决方案1】:

不,f(n) = Ω(g(n))(参见注释)意味着运行时间fg 渐近地限制在从下方 (see wiki)。换句话说,当n → ∞|f(n)| ≥ C ⋅ |g(n)|(其中C 是某个常数因子)。

Ω(n log n) 的最坏情况复杂性意味着算法的最坏情况运行不会比n log n 更快(但可能更慢)。它没有说明上限,这就是 O 符号的用途:如果最坏情况下的复杂度是 O(n²),那么您的算法在最坏情况下运行 不会更慢(但可能更快) 比。算法的最坏情况复杂度很可能同时是Ω(n log n)O(n²)。这些是不同的信息(下限和上限)。

所有这些都没有说明最佳情况的复杂性,也没有说明平均情况的复杂性。同样,您可以同时使用 ΩO 符号来描述这些运行时间。


注意: 带有= 的符号具有误导性,因为它的右侧不是一个函数,而是一个函数类;最好写成f ∈ Ω(g),但传统已经决定了。

【讨论】:

  • 我能说最坏情况的算法 Ω(n log n) 比 O(n²)好很多吗?
  • ,请仔细阅读wiki文章和cmets。比如说,你在最坏情况下的确切运行时间是f(n)Ω(n log n) 表示n → ∞ n log n < f(n)。如您所知,f(n) 可以是 n³,而 Ω 界限仍然有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-28
  • 2011-11-13
  • 2011-12-09
  • 2020-06-20
  • 1970-01-01
  • 2021-06-12
  • 2013-05-04
相关资源
最近更新 更多