【问题标题】:Comparing the Bounds of Functions比较函数的界限
【发布时间】:2016-02-07 20:46:14
【问题描述】:

我了解函数边界的一般概念;例如,如果我们说一个函数

ƒ1(n) ∈ Ω(n^2)

那么我们知道ƒ1(n)是下界n^2约束内的一个元素,意思是ƒ1(n) 可以是任何增长较慢或等于 n^2 的函数。

现在,当我们谈论关于 ƒ1(n) 边界的其他函数时,我开始感到困惑。例如,假设我们有一个声明如下:

如果

ƒ1(n) ∈ Ω(n^2)

和

ƒ2(n) ∈ Θ(n)

那么

ƒ2(n) ∈ O(ƒ1(n))

我很难判断它是真是假。我有两种相互矛盾的方法:

  • true - 由于 ƒ2 在 n 下是紧密绑定的,所以它可以被认为是 约束内的一个元素>O(ƒ1(n)),因为 ƒ2 的增长速度并不比 ƒ1 慢。
  • false - 由于 ƒ1 的下界为 n^2,因此函数 ƒ2 紧束缚在 n 下,不能被认为是 ƒ1 上限的元素,因为我们知道 ƒ1 不会有上限bound 的增长速度比 n^2 慢。

我想到的这两种方法对我来说似乎都有效;当我们试图确定另一个函数是否是其上限的元素时,我想我是否关心 ƒ1 的下限。

任何有关澄清这一点的帮助将不胜感激。

【问题讨论】:

  • 我认为这个问题应该在cs.stackexchange.com提出
  • @rolve 我在这里和 cs exchange 上看到过算法问题,所以我不确定在哪里发布 - 有没有办法将这个问题移到那里,或者我应该关闭 / 在 cs exchange 上重新发布?
  • 当我投票结束该问题时,它建议我将此问题迁移到的位置,但 CS 不在列表中。所以也许你必须重新发布,但我不完全确定。
  • @rolve 好的,我想我会把它留在这里一段时间,看看其他人的想法(我是否应该将它移到 cs 交换或这里是否可以等)

标签: algorithm big-o


【解决方案1】:

让我们看看 big-O 等的定义。所有公式对于足够大的 n 都是有效的。然后,存在一些常量k,例如:

第一个公式:

ƒ1(n) ∈ Ω(n^2)
⇔ k1 * n^2

第二个公式:

ƒ2(n) ∈ Θ(n)
⇔ k2 * n

我们知道k3 * n < k1 * n^2(同样,对于足够大的n)。因此:

k2 * n

这可以简化为

f2(n)

有了这些知识,我们看到推断的公式是正确的:

ƒ2(n) ∈ O(ƒ1(n))
⇔ f2(n)

【讨论】:

  • 那么在讨论是否不是 ƒ2(n) ∈ O(ƒ1(n)) 时,ƒ1(n) 有下界这一事实不会影响 ƒ2(n) 吗?
  • 不,这是必要条件。 f1(n) 的下界是 n^2,这一事实让我们可以立即执行步骤 (k3 * n < k1 * n^2)。如果f1(n) 不是有界的,我们就不能做这一步,也不能说 ƒ2(n) ∈ O(ƒ1(n)) 是否。
  • 我现在用你的数学方法更好地理解了这一点;谢谢你,我真的很感激。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-04
  • 1970-01-01
  • 2023-03-22
  • 2016-03-15
  • 2014-10-10
  • 1970-01-01
相关资源
最近更新 更多