【问题标题】:Understanding asymptotic notation理解渐近符号
【发布时间】:2020-10-26 09:42:13
【问题描述】:

如果你有这个表达式: O(n^4) + Ω(n^2)。

那人认为运行时间介于 n^4 和 n^2 之间吗? 或者它可以是: 从 n^2 到无穷大, 还是从 n^4 到 1?

感谢您的帮助!

【问题讨论】:

  • 你永远不会遇到这样的表达方式,除非是错误的。

标签: algorithm runtime notation


【解决方案1】:

语句f(n) = O(n^4) + Ω(n^2)表示f可以表示为两个函数之和:

  • f(n) = g(n) + h(n);
  • g(n) = O(n^4);
  • h(n) = Ω(n^2).

假设 gh 都是非负的,那么 f >= hf >= g。因为h(n) = Ω(n^2),所以f(n) = Ω(n^2)也是真的;这是 Ω( ) 的一个性质,可以很容易地从它的定义中得到证明。然而,f(n) >= g(n)g(n) = O(n^4) 并没有提供更多关于 f 的信息.

所以我们只能说:

f(n) = Ω(n^2)

【讨论】:

  • 如果允许负 g,Ω(n²) 甚至不能保证!
  • @YvesDaoust 是的,在更数学的上下文中,除非明确说明,否则我不会假设 g 和 h 是非负的。但考虑到问题的“算法”和“运行时”标签,这听起来很合理。也许该声明的作者有一个由两部分组成的算法;他们证明了第一部分的运行时间为 O(n^4);他们证明了第二部分以 Ω(n^2) 运行;他们得出结论,算法在 O(n^4) + Ω(n^2) 中运行;然后他们不知道如何处理该信息并将其留在那里。然后 OP 阅读了证明并感到困惑。
  • 别担心,我知道 :-)
  • 这是一项任务,我是计算机科学专业的新生,所以我不知道你在最后一条评论中在说什么,但我想我应该让你知道: )