困惑于小O的意思

时间:2015-12-28 18:52:51

标签: algorithm big-o time-complexity computer-science little-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 个答案:

答案 0 :(得分:3)

id: '345678', name: 'John McClane', blocked: [{ user: '123214', time: 88273626362 },{ user: '345654', time: 88273698678 },{ user: '554568', time: 88273658858 }], created: 127381283 位于blocked(小o),因为:

2^n

Simmilarly。对于o(3^n),很容易证明它在lim_n->infinity (2^n / 3^n) = 0

直观的"小o"是 - 它是一个上限,但不是一个紧。这意味着,如果f(n)在2n中,而o(n^2)中没有,则函数f(n)位于o(g(n))

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

答案 1 :(得分:1)

大O和小O之间的唯一区别是大O允许函数以相等相位增长但是小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)具有较高的增长率。

如果了解Big O,定义小O的最佳方法是:

如果函数是Big O而不是Big Omega,则该函数称为小O. - 这是因为大的欧米茄和大的O只在两个函数s的groth速率相等的条件下交叉,所以如果我们删除那个特定的情况它是小O.

但是请记住,如果f(x)是Big O g(x),它也可以是g(x)的小O,但反之亦然。