微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

不同复杂度类中Big-O符号比较的说明

如何解决不同复杂度类中Big-O符号比较的说明

为什么 Big-O 表示法不能比较同一复杂度类中的算法。请解释一下,我找不到任何详细的解释。

解决方法

因此,O(n^2) 表示此算法需要更少或相等 数量的操作来执行。因此,当您有需要 A 操作的算法 f(n) = 1000n^2 + 2000n + 3000 和需要 B 操作的算法 g(n) = n^2 + 10^20 时。他们都是O(n^2)

对于较小的 n,第一个算法的性能将优于第二个。对于大n,第二个算法看起来更好,因为它有1 * n^2,但第一个有1000 * n^2

此外,h(n) = n 也是 O(n^2),而 k(n) = 5O(n^2)。所以,我可以说 k(n)h(n) 更好,因为我知道这些函数的样子。

考虑我不知道函数 k(n)h(n) 是什么样子的情况。我唯一得到的是k(n) ~ O(n^2),h(n) ~ O(n^2)。我能说哪个功能更好吗?号

总结

你不能说哪个函数更好,因为大 O 符号保持小于或等于。以下内容属实

O(1) is O(n^2)
O(n) is O(n^2)

如何比较函数?

有一个大欧米茄符号表示大于或等于,例如f(n) = n^2 + n + 1,这个函数是Omega(n^2)Omega(n)Omega(1) .当函数的复杂度等于某个渐近时,使用 Big Theta,因此对于上面描述的 f(n) 我们可以说:

f(n) is O(n^3)
f(n) is O(n^2)
f(n) is Omega(n^2)
f(n) is Omega(n)
f(n) is Theta(n^2) // this is only one way we can describe f(n) using theta notation

因此,要比较函数的渐近性,您需要使用 Theta 而不是 Big O 或 Omega。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。