大哦,定义的后果

时间:2010-11-25 21:45:47

标签: big-o asymptotic-complexity

我花了很多时间在这里和math.stackexchange上阅读关于Big-Oh的问题和答案,似乎这是最好的地方,因为math.stackexchange似乎不喜欢这类问题。所以我在我的CS课程上获得了一些关于uni的课程,但我并不完全理解它,并且希望你们可以提供帮助。我理解“家庭作业”的问题在这里略显皱眉,所以我选择了另一个例子我的课程作业,但类似的风格。

所以这是我在笔记中给出的定义: alt text

我给出的问题是:

使用定义2.5表明,如果f(n)是O(g(n)),那么k + f(n)也是O(g(n))。

我花了3天的时间在网上搜索这些问题的任何答案。从定义2.5可以看出,f(n)是O(g(n)),k + f(n)是O(g(n))。这对我来说已经足够了,但似乎我必须证明这是如何产生的。我一开始认为它应该通过归纳以某种方式完成,但从那时起就决定反对,并且必须有一种更简单的方法。

任何帮助将不胜感激。我不指望有人直截了当地给我答案。我更倾向于使用方法论或参考我可以学习这种技术的方法。我可以再次提醒你,这是我的实际课程,但是类似风格的问题。

先谢谢。

4 个答案:

答案 0 :(得分:2)

假设f(n)是O(g(n))
然后存在c和k's.t.对于所有n> k':f(n)< = cg(n)
现在考虑f(n)+ k
对于大于k'的所有n,令d为s.t k <= d * g(n) 你知道这是可能的,因为k在O(1)
中 然后
f(n)+ k <= cg(n)+ dg(n)=(d + c)(g(n))
然后使用定义并用d + c代替c,==&gt; f + k在O(g)

答案 1 :(得分:1)

f(n)&lt; = cg(n)

k + f(n)&lt; = c'g(n) 其中c'= ck

所以k + f(n)是O(g(n))

答案 2 :(得分:0)

然后kO(1)f(n)O(g(n)),那么您可以对这些值求和,然后O(1+g(n))这是O(g(n));

f(n)O(g(n))k + f(n)也为O(g(n)),因为您已在书中写过

  

忽略添加常量

始终忽略常量,因为无法更改 Big-O 表示法,O(1)表示法中任何常量都为Big-O

答案 3 :(得分:0)

对于它的价值,这是一个有点人为的大O符号的定义。更一般的,在我看来,更直观的定义是,对于某些有限实数f(n) ~ O(g(n))n->alim|f(n)/g(n)| <= A iff n->aA

重要的是要求限制上下文。在CS中,该限制被隐式地视为无穷大(因为这是问题大小增加时n倾向于的),但原则上它可以是任何东西。例如,sin(x) ~ O(x)x->0(事实上,它与x完全渐近;这是小角度近似值。)