2011-02-02 29 views
1

我们刚开始在课堂上学习big-o。我知道f(x)是g(x)的大-o的一般概念,如果存在两个常数c,k使得对于所有x> k | f(x)| < = c | g(x)|。我有一个问题,是否需要我们包含< =要签名,还是只需要将<签名?<= vs <当证明大O符号时

例如: 假设f(x)= 17x + 11,我们要证明这是O(x^2)。 然后,如果我们取c = 28和x> k = 1,我们知道17x + 11 < = 28x^2。所以既然我们知道x总是大于1,这意味着28x^2将总是大于17x + 11。所以,我们是否真的需要包括等号(< =),或者如果我们只写(<),它可以吗?

在此先感谢。

回答

2

来自| fx)| ≤ c | gx)|对于一些实值的c,它遵循| fx)| <(c + e)| gx)|对于所有é> 0

从它遵循了存在C” =(ç + È),使得| fx)| < c' | gx)|,所以你可以使用<而不是≤。

更实际的是,如果您可以证明| fx)| < c | gx)|,≤部分遵循平凡。

+0

1美丽的解释不同的类(小O符号)。 – templatetypedef 2011-02-03 08:53:11

0

如果您已显示x < y,那么您还显示x < = y。所以它没有区别。

0

它是否是必需的,我们包括<等号(=),或者是否恰好足以把<标志?

有两个你问这里稍有不同的东西,我想:

  • 如果你可以证明一个ck使得对所有x > k|f(x)| <= c|g(x)|,那么平凡的你也展示了一个ck,以至于所有的x > k|f(x)| < c|g(x)|。所以显示<足够,但:

  • 如你所说,为了能够说f(x) = O(g(x))实际需求是要找到一个ck使得对所有x > k|f(x)| <= c|g(x)|。如果我们能做到的最好是找一个ck使得对所有x > k|f(x)| = c|g(x)|,那么我们还没有见过你们<条件,但我们已经做足以显示f(x) = O(g(x))。所以显示<不是必要

0

不能代替< =在定义<。

任何无限通常为零的函数f都是O(f),但如果用<替换< =,则不适用。例如,如果x是奇数,则设f(x)= x,如果x是偶数,则设为0。那么f是O(f),因为所有x的f(x)< = f(x)。然而,对于所有大的x,没有c使得f(x)012(cf)x(x),因为对于所有的x均为0。

0

这是确定使用<代替,但很明显,他们是-in一些情况下─相同,因为是大O符号定义的一部分。

在另一方面,该定义:0 ≤ f(n) < cg(n)属于哪个被包括在大O类