0

我已经看到了 O 表示法的两种不同的正式定义:

f(n) = O(g(n)) 如果有常数 n 0 , c 其中对于任何 n 0,我们有 f(n) < cg(n)

f(n) O(g(n)) 如果有常数 n 0 , c 其中对于任何0,我们有 f(n) ≤ cg(n)

区别在于 f(n) 是严格小于 cg(n) 还是小于或等于 cg(n)。

这些定义是否相等?如果是这样,我该如何证明?

4

1 回答 1

3

首先,如果你有

f(n) < cg(n) 对于任何 n ≥ n 0

那么情况也是如此

f(n) ≤ cg(n) 对于任何 n ≥ n 0

同样,假设

f(n) ≤ cg(n) 对于任何 n ≥ n 0

假设 g(n) ≥ 1,那么你得到,对于任何 n ≥ n 0

f(n) ≤ cg(n) ≥ cg(n) + 1 ≤ cg(n) + g(n) = (c + 1)g(n)

因此,使用新常数 c' = c + 1,我们得到

f(n) < c' g(n) 对于任何 n ≥ n 0

希望这可以帮助!

于 2013-10-28T16:42:27.863 回答