Big-O和Big Omega的功能 - 家庭作业

时间:2013-02-09 01:59:42

标签: analysis big-o

所以我被赋予了一个功能,我将改变功能,因为它是功课,我想学习如何做到这一点,而不是被告知答案是什么。

使用big-Oh和Ω的定义,找到上限和下限 以下表达式。请务必说明c和k的适当值。

c 1 3 n + c 2 n 4 ,其中常数为正整数。

现在,我理解如何确定函数f(n)∈O(g(n))或f(n)∈Ω(g(n)来自类。

我不明白的是如果你所拥有的只是f(n),那么如何确定g(n)。我希望这是有道理的!

编辑:我敢肯定你可以强行插入g(n)的一堆函数,但如果有更好的解决方案,那就不是我想要的了。

Edit2:我们不能使用限制方法,他们希望我们以某种方式使用基本定义。

编辑3:以下是我们给出的定义:

以下是我对Big O的看法:

对于T(n)非负值函数,T(n)在集合O(f(n))中 如果存在两个正常数c和k使得T(n)<= c * f(n) 对于所有n&gt; ķ。

对于Ω:

对于T(n)非负值函数,如果存在两个正常数c和k,则T(n)在集Ω(g(n))中,使得T(n)> = c * g(n)对于所有n&gt; ķ

1 个答案:

答案 0 :(得分:1)

直觉是f∈O(g)意味着g在某种程度上等于或大于f;并且f∈Ω(g)意味着g在某种程度上等于或小于f。在我的回答中,对于如何选择常数,我不会太精确/挑剔。

首先要热身,你应该说服自己

  • f∈O(f)且f∈Ω(f)。 (令c = 1,定义中k = 1)。
  • 如果f∈O(g),则g∈Ω(f),反之亦然。 (如果你找到一个常数(c,k),那么(1 / c,k)是你需要的常数)
  • 如果f∈O(g),则对于任何正常数P,Q,f∈O(P * g)和Q *f∈O(g)。这意味着通过正常数乘以函数无关紧要。同样适用于Ω。
  • 如果f∈O(g)且f∈O(h),则f∈O(MIN(g,h))。
  • 如果f∈Ω(g)且f∈Ω(h),则f∈Ω(MAX(g,h))。

当您面临试图找到O或Ω的f + g时,通常会猜测O(f)或O(g)或Ω(f)或Ω(g)。

在你的3 ^ n + n ^ 4的情况下,我们知道3 ^n∈O(3 ^ n),n ^4∈O(n ^ 4)和3 ^ n + n ^4∈O( 3 ^ n + n ^ 4)。但我们希望做得更好。我们想要证明3 ^ n + n ^4∈O(3 ^ n + 3 ^ n)= O(3 ^ n)。如果我们能显示n ^4∈O(3 ^ n),我们就可以做到这一点。

我们应该按照定义说我们应该这样做:显示有(c,k)这样所有n&gt; k

n^4 ≤ c3^n
4log(n) ≤ log(c) + nlog(3)
4log(n) - nlog(3) ≤ log(c)

显示此c始终存在的一种方法是使用微积分:显示4log(n) - nlog(3)最终是递减函数。导数是4 / n - log(3),我们可以看到足够大的n,它是负的。因此,对于足够大的n,4log(n)-nlog(3)正在减少。因此,存在不等式为真的正常数c。因此n ^4∈O(3 ^ n)。并且3 ^ n + n ^4∈O(3 ^ n + 3 ^ n)= O(3 ^ n)。

因为3 ^ n + n ^4≥1* 3 ^ n,3 ^ n + n ^4∈Ω(3 ^ n)。为了说明常数无关紧要,让我们使用c_1和c_2:c_1 * 3 ^ n + c_2 * n ^ 4。设d:= min(c_1,c_2)。然后

c_1*3^n + c_2*n^4 ≥ d(3^n + n^4) ≥ d*3^n

所以c_1 * 3 ^ n + c_2 * n ^4∈Ω(3 ^ n)。类似地,使用O(3 ^ n):设d:= max(c_1,c2)。那么对于足够大的n,

c_1*3^n + c_2*n^4 ≤ d(3^n + n^4) ≤ d(c*3^n) = (dc)*3^n

我们知道这个c存在是因为3 ^ n + n ^4∈O(3 ^ n)。因此c_1 * 3 ^ n + c_2 * n ^4∈O(3 ^ n)。

不确定我是否回答得足够,但希望有所帮助。