对 Little O 的意思感到困惑

Confused on Little O meaning

所以我从 little o page 中得到的是,当您应用小 O 符号时,我们必须检查一个速率是否比另一个速率快(小 o 关注上限)?

在这种情况下,当我们应用小 o 时:

2^n = o(3^n) 将为假,因为 2^n 和 3^n 上限速度相等但不小于

2n = o(n^2) 为真,因为 n^2 上限为 2 而 2n 没有上限。

我走的路对吗?

2^no(3^n)(小 o)中,因为:

lim_n->infinity (2^n / 3^n) = 0

同理。对于2n,很容易证明它在o(n^2)

"little o" 的直觉是 - 它是一个上限,但不是一个严格的上限。这意味着,如果 f(n) 在 O(g(n)) 中,则函数 f(n)o(g(n)) 中,但不在 Omega(g(n)).

在您的示例中,2^nO(3^n) 中,但不在 Omega(3^n) 中,因此我们可以说它在 o(3^n)

big O 和 Small O 之间的唯一区别是 big O 允许函数在相同的阶段增长,但是 small O 表示 g(x) 具有更高的增长率并且在特定的之后永远不会相等点 x'(考虑 f(x)=o(g(x)) )

你提供的第一个例子是错误的,因为小O说: 对于 f(x)=o(g(x)) |f(x)|x'

然而在上述情况下,f(x)=2^x 和 g(x)=3^x 不存在满足它的 C 和 x' 因为 g(x) 具有更高的增长率。

如果你了解大 O,定义小 O 的最佳方式是:

如果一个函数是 Big O 而不是 Big Omega,则它被称为 small O -- 这是因为大 omega 和大 O 只在两个函数 s 的增长速率相等的情况下相交,所以如果我们删除那个特定情况,它就是小 O。

但是请记住,如果 f(x) 是大 O g(x),它也可以是 g(x) 的小 O,但反之则不可能。