【问题标题】:What is the difference between complexity classes and big o notation?复杂度类和大 o 符号有什么区别?
【发布时间】:2020-09-12 17:27:01
【问题描述】:

给定函数的复杂度等级和大 o 是多少? 这些是一样的吗? 例如:n^2 + n

谢谢

【问题讨论】:

    标签: time-complexity big-o computer-science discrete-mathematics


    【解决方案1】:

    复杂性类和大 O 表示法不是一回事。 Big-O 符号只是传达函数渐近行为的符号;也就是说,对于所有 n>N,O(f(n)) 是上界为 c*f(n) 的所有函数的集合,其中 c 和 N 是通用常数。因此,在您的示例中,我们会说 n^2 + n 在 O(n^2) 中,因为对于所有 n>=1,n^2 + n

    另一方面,复杂性类是语言的类,我们可以将其视为“决策问题(例如,确定某个对象 X 是否具有给定属性)。复杂性类描述算法解决给定的决策问题需要多少计算能力。例如,假设我们要确定是否按升序对包含 n 个数字的数组进行排序。因为我们可以通过简单地一次扫描一个项目来做到这一点并确保没有减少,解决决策问题需要 n 步。因此,此决策问题属于 P 类,该类包含所有具有多项式时间算法的语言。请注意,这是问题的属性,而不是给定的函数。您还可以通过枚举 n 个元素上的所有列表并检查输入是否匹配来确定列表是否排序,但这确实效率低下。复杂性类由是否存在足够的算法来解决决策问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-07
      • 2012-10-29
      • 1970-01-01
      • 1970-01-01
      • 2011-02-12
      • 2014-05-29
      • 1970-01-01
      • 2021-05-13
      相关资源
      最近更新 更多