3

我试图找到函数的大 O 时间复杂度

f(x) = (x 4 + x 2 + 1)/(x 4 + 1)

和功能

f(x) = (x 3 + 5 log x)/(x 4 + 1)

如果我可以消除分数分母上的 +1 项,这将非常简单,因为那时我可以只除以 x 4。我怎样才能消除它们?

谢谢!

4

2 回答 2

2

big-O 表示法的定义是这样的:当存在 M - real 且 x0>0 时,我们写 f(x) = O(g(x)) 使得对于每个 x > x0 为真,|f(x) | ≤ M |g(x)|。

对于案例 1,我们将证明 f(x) = O(1)。令 g(x) = 1。选择 M = 2 和 x0 = 0 给我们

|(x 4 + x 2 + 1) / (x 4 + 1)| = (x 4 + x 2 + 1) / (x 4 + 1) ≤ (x^4 + (x^4 + 1) + 1) / (x 4 + 1) (因为 x 2 <= x 4 + 1对于 x > 0) = 2 = M|g(x)|

因此,在所有这些之后,我们将得到 f(x) = O(1)。我希望这对第二个例子也有帮助。我想你明白了。您只需选择适当的 M、x0 和 g 并证明不等式。

于 2013-11-07T00:32:27.483 回答
2

使用 big-O 时,它通常有助于对值进行下限和上限,而不必获得确切的值。

例如,给定 (x 4 + x 2 + 1)/(x 4 + 1),可能有用的一件事是注意对于 x ≥ 1,

(x 4 + x 2 + 1)/(2x 4 ) ≤ (x 4 + x 2 + 1)/(x 4 + 1) ≤ (x 4 + x 2 + 1)/x 4

现在你已经把所有东西都夹在中间了,你可以从那里简单地简化所有东西以获得

(1/2)(x 4 + x 2 + 1)/(x 4 ) ≤ (x 4 + x 2 + 1)/(x 4 + 1) ≤ (x 4 + x 2 + 1)/x 4

(1/2)(1 + 1 / x 2 + 1 / x 4 ) ≤ (x 4 + x 2 + 1)/(x 4 + 1) ≤ 1 + 1 / x 2 + 1 / x 4

不等式的前半部分告诉你你的表达式是 Ω(1),后半部分告诉你它是 O(1)。因此,表达式为 Θ(1)。

尝试使用相同的技巧来简化其中的第二个。

希望这可以帮助!

于 2013-11-07T00:40:09.653 回答