上界算法分析

时间:2013-05-04 21:52:02

标签: algorithm data-structures

>Problem: n^4 + 100n^2 + 50. 

>Solution given: n^4 + 100n^2 + 50 <= 2n^4 for all n>=1
>                n^4 + 100n^2 + 50 = O(n^4) with c=2 and n0 = 100

但是当n为1时,上述函数将为“4 + 100 + 50 <= 2”,这是不正确的。如何为此问题推导出正确的上限,或者让我知道给定的解决方案是否错误。

问题来自数据结构和算法在java中变得容易。

2 个答案:

答案 0 :(得分:1)

说明解决方案的正确方法是

n^4 + 100n^2 + 50 <= c*n^4 for all n>=n0 with c=2 and n0 = 100

=> n^4 + 100n^2 + 50 = O(n^4)

答案 1 :(得分:0)

我们需要找到最小的增长率,g(n)这样

c g(n) >= f(n) for n>=k.

对于c和k的某个常数值,上述等式将成立。我们不考虑n的较低值。这意味着,g(n)的低值n并不重要。对于较大的n值,g(n)将是f(n)的最大增长率。

此处f(n)= n^4 + 100 n^2 + 50

n非常大时,g(n) = n^4

查找ck,以便c n^4 >= n^4 + 100 n ^2 + 50

如果我们弃置,则降低字词100 n^250。我们可以说c应为2

2 n^4 >= n^4 .

要查找k的值,请尝试替换n^2 = tn^4 = t^2c=2

2t^2 >= t^2 + 100t + 50

t^2 >= 100t +50

如果我从t12345开始设置6的值,78910t^2 =100

10,我仍然有

100,00 <= 100, 00 +50

t=11t^2 = 121,我在

之下
14,641 >= 12150.

所以我的k将是11

对于其他等式,f(n) = 3n +8

也是如此

g(n)将为n。查看ck,以便下面的内容为true

c.g(n) >= f(n)

4n>=3n+ 8,丢弃常量8以查找c,并将常量8插回等式中以查找k

k=8,我们有32>=32