我理解如何使用Big-O的定义来证明f(n)是O(n)或O(n ^ 2)但是我迷失了O(2 ^ n)你可以帮助证明2 ^ n + n ^ 3 + 30是O(2 ^ n)pls? Bsc AI Yr1喜欢这一切,但复杂性是我的屁股!
答案 0 :(得分:1)
Big O Notation定义函数的行为,因为它接近某个值。通常,我们说无限,但通常“任意大数”就足够了。
因此,你处于数学极限的世界; Math SE在这里会有所帮助,但让我们考虑你的情况。为了表明:
O(2^n +n^3 + 30) == O(2^n)
我们需要证明,由于n
趋于大量,2^n +n^3 + 30
趋于2^n
。通过检查,您可以看到,当n
为10时,n^3
为1000,因此已经大于30(并且随着n
增长而增长)。此时,2^n
为1024,因此与n^3
的顺序相同,但也会变大。一旦n
为100,n^3
为100万,2^n
是此数字的5倍(1 x 10^30
)......所以第一项条款超出了其他条款n
1}}不是我们所谓的“任意大”
因此,通过检查,我们知道
O(2^n +n^3 + 30) == O(2^n)
答案 1 :(得分:0)
嗯,这取决于您可以使用的工具。乍一看,这很明显,所以你可能需要深入了解证据。
基本上,n ^ 3与2 ^ n相比非常小,因此n ^ 3~o(2 ^ n)。
相同的常数30。
所以
根据定义, 2^n + n^3 + 30 ~ 2^n + o(2^n) ~ O(2^n)
。
如果证据不足,你可以证明
limit n^3/2^n (when n-> infinity) = 0
答案 2 :(得分:0)
证明n^3 < 2^n for some n > n0
(通过归纳或查看一些典型的数学练习并参考它。你不必找到最小的n0,只需要找到任何n0)
然后使用此结果显示|2^n + n^3 + 30| <= |2^n +2^n + 2^n|
,并在2和4之间找到一个漂亮的c,以显示最后一个字词小于c*|2^n|
。
在完成所有这些之后,将所有内容写在一起,你应该有|2^n +n^3 + 30| <= ... <= c*|2^n| for n > <n0> and c=<value>
之类的内容(<n0>
和<value>
在完成后应该是一些数字)。这是定义。
答案 3 :(得分:0)
我不会为你解决问题,因为这听起来像是家庭作业。但我会解决你已经知道如何解决的问题,然后试着说服你,这个问题没有什么不同。
因此。回想一下,当我们试图证明某些函数(称为f(n))属于其他函数的Big-Oh时,我们正在做什么,称之为g(n)。我们试图证明达到某个常数因子和,因为n变大,f(n)永远不会比g(n)更差。我们通过选择两个数字c和n 0 来做到这一点。第一个是c,我之前提到过的“常数因素”。我们将把f(n)与g(n)联系起来如下:
f(n)≤cg(n)对于所有n≥n 0
问题是,c和n0并不是唯一的。通常,您几乎可以任意选择一个,并用简单的代数计算另一个的值。所以让我们试试
f(n)=n²+ 5n + 10
g(n)=n²
首先,我们根据常数因子c:
设置关系n²+ 5n +10≤cn²
现在我们想要自己得到c,与n的其他一些函数有关,所以只需将n 2除以两边:
1 + 5 / n + 10 /n²≤c
我们想知道n的哪个值(我们称之为n 0 )使得n的所有较大值都为真。好吧,我们可以选择一个c并求解n,或者选择一个n 0 并求解c。没关系,但是让我们选择n 0 = 1,只需将它插入到我们看到的任何地方,看看会发生什么:
1 + 5/1 + 10/1 = 1 + 5 + 10 =16≤c
这就是我们的答案:如果我们选择c为16,那么只要n大于1(即n 0 = 1),那么f(n)将小于g(n) 。
现在,你可以解决你想要解决的问题吗?嗯......为什么不呢?我们有两个函数,f(n)和g(n)。我们试图证明与您知道如何解决的问题完全相同的关系。所有改变的是函数的类型,从n中的多项式到n中的指数(以及混合中的指数)。但这有关系吗?那么,代数看起来会有点不同,但那又怎样呢?这是代数。