证明f(n)是O(2 ^ n)

时间:2013-02-28 15:18:33

标签: artificial-intelligence computer-science complexity-theory big-o

我理解如何使用Big-O的定义来证明f(n)是O(n)或O(n ^ 2)但是我迷失了O(2 ^ n)你可以帮助证明2 ^ n + n ^ 3 + 30是O(2 ^ n)pls? Bsc AI Yr1喜欢这一切,但复杂性是我的屁股!

4 个答案:

答案 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中的指数(以及混合中的指数)。但这有关系吗?那么,代数看起来会有点不同,但那又怎样呢?这是代数。