所以我被赋予了一个功能,我将改变功能,因为它是功课,我想学习如何做到这一点,而不是被告知答案是什么。
使用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; ķ
答案 0 :(得分:1)
直觉是f∈O(g)意味着g在某种程度上等于或大于f;并且f∈Ω(g)意味着g在某种程度上等于或小于f。在我的回答中,对于如何选择常数,我不会太精确/挑剔。
首先要热身,你应该说服自己
当您面临试图找到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)。
不确定我是否回答得足够,但希望有所帮助。