我们刚开始在课堂上学习大班。我理解f(x)是g(x)的大-o的一般概念,如果存在两个常数c,k,则对于所有x> k | f(x)|< = c | g(x)| 。我有一个问题是,是否要求我们包括< =签名或者是否足以放入<登录?
例如: 假设f(x)= 17x + 11,我们要证明这是O(x ^ 2)。 然后,如果我们取c = 28且x> k = 1,我们知道17x + 11 <= 28x ^ 2。因此我们知道x总是大于1,这意味着28x ^ 2总是大于17x + 11。那么,我们是否真的需要包含等号(&lt; =)或者如果我们只写(&lt;)就可以了?
提前致谢。
答案 0 :(得分:2)
来自| f ( x )| ≤ c | g ( x )|对于某些实值 c ,它遵循| f ( x )| &LT; ( c + e )| g ( x )|对于所有 e &gt; 0
由此可见 c' =( c + e ),以便| f ( X )| &LT; c' | g ( x )|,因此您可以使用&lt;而不是≤。
更实际的是,如果你能证明| f ( x )| &LT; c | g ( x )|,≤部分非常简单。
答案 1 :(得分:0)
如果您显示x&lt;那么你也表现出x&lt; = y。所以没有区别。
答案 2 :(得分:0)
是否要求我们包括&lt; =符号或者是否仅仅将&lt; =登录?
我想这里有两个略有不同的东西,我想:
如果您可以为所有c
k
演示x > k
和|f(x)| <= c|g(x)|
,那么您还可以 展示c
和k
,适用于所有x > k
|f(x)| < c|g(x)|
。因此显示<
足够 ,但是:
如您所述,能够说f(x) = O(g(x))
的实际要求是找到c
和k
,以便x > k
{ {1}}。如果我们能做的最好的事情是找到|f(x)| <= c|g(x)|
和c
,那么对于所有k
x > k
,我们都没有达到您的|f(x)| = c|g(x)|
条件,但是我们已经做足以显示<
。因此显示f(x) = O(g(x))
不是必要
答案 3 :(得分:0)
您无法替换&lt; = with&lt;在定义中。
任何通常为零的函数f都是O(f),但是如果用&lt; =替换&lt;。
例如,如果x是奇数,则设f(x)= x,如果x是偶数,则设为0。那么f是O(f),因为对于所有x,f(x)<= f(x)。然而,没有c使得f(x)<1。 cf(x)表示所有大x,因为对于所有偶数x,双方都是0。
答案 4 :(得分:0)
使用<
代替≤
不确定,但很明显它们在某些情况下是相同的,因为≤
是Big-O表示法定义的一部分。
另一方面,定义:0 ≤ f(n) < cg(n)
属于另一个类(Little-o表示法),它包含在Big-O类中