big-o - O(f(n)) + Ω(g(n)) 是否等于 Ω(f(n)) + O(g(n))?
问题描述
下面的等式是真的吗?:
O(f(n)) + Ω(g(n)) = Ω(f(n)) + O(g(n))
我知道 Big O 的意思是不比 (function) 好,而 Big Omega 的意思是不比 (function) 差。但我不知道这是否使上述陈述为真或假。
解决方案
我们有三种一般情况(用于增加函数):
案例 1: f(n) ∈ o(g(n))(注意“小哦”)。
在这种情况下,O(f(n)) ⊂ O(g(n)) 和 Ω(g(n)) ⊂ Ω(f(n))。因此,O(f(n)) + Ω(g(n)) 是 O(g(n)) + Ω(f(n)) 的真子集。
例如,如果 f(n) = n 且 g(n) = n 3,则 n 2在 Ω(f(n)) + O(g(n)) 中,但不在 O(f(n) 中)) + Ω(g(n))。
案例2: f(n) ∈ Θ(g(n))
在这种情况下,O(f(n)) = O(g(n)) 和 Ω(g(n)) = Ω(g(n)),所以两组相等。
案例3: f(n) ∈ ω(g(n))
这种情况相当于情况 1,只是f和g翻转了。所以通过对称性,我们有 O(f(n)) + Ω(g(n)) 是O(g(n)) + Ω(f(n))的适当超集。
总之,这两组一般不相等。
推荐阅读
- scala - intellij scala:错误:找不到或加载主类
- java - 为什么不调用 Cleaner 操作?
- r - 如何将相同的功能应用于 R 中的多个文件
- java - 如何在while循环中添加或函数
- javascript - 如何在标签元素内的文本旁边添加新文本
- c# - 如何通过 C# 修复更新文档 mongoDb 中的冻结?
- sql-server - 文件表为“stream_id”列插入了重复键
- google-cloud-dataflow - RexCall 无法在 Apache Beam SQL 中转换为 RexInputRef 异常
- java - 如何将一堆布尔值转换为字节值?
- c# - 如何获取网络摄像头捕获的picturebox图像路径