对 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^n
在 o(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^n
在 O(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,但反之则不可能。
所以我从 little o page 中得到的是,当您应用小 O 符号时,我们必须检查一个速率是否比另一个速率快(小 o 关注上限)?
在这种情况下,当我们应用小 o 时:
2^n = o(3^n) 将为假,因为 2^n 和 3^n 上限速度相等但不小于
2n = o(n^2) 为真,因为 n^2 上限为 2 而 2n 没有上限。
我走的路对吗?
2^n
在 o(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^n
在 O(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,但反之则不可能。