Big-O-Notation,计算规则

时间:2017-05-06 16:23:14

标签: big-o complexity-theory proof

我对Big-O-Notation有疑问。 我们有zu证明或表明,以下的州议员,都不正确。我不知道如何展示它。

a)给定一个多项式p,其度k> = 1:log(p(n))∈Θ(log(n))

b)f,g∈Θ(h)⇒| f - g | ∈Θ(h),其中| f - g | :n→| f(n) - g(n)|

你们中的任何人都可以告诉我什么是正确的,而不是解释我怎么能表明这个?

2 个答案:

答案 0 :(得分:0)

  

a)给定一个多项式p,其度k> = 1:log(p(n))∈Θ(log(n))

设p(n)= a [0] + a [1] n + a [2] n ^ 2 + ... + a [k] n ^ k,其中k> = 1.为了显示Theta我们必须显示O和Omega,或两种方式。为了显示O,我们证明存在c,使得对于n> n0,log(p(n))&lt; = c log(n)。首先,我们注意到&lt; = b iff e ^ a&lt; = e ^ b(因为e ^ x是单调增加的)。因此,log(p(n))&lt; = c log(n)iff p(n)&lt; = n ^ c。我们可以从p(n)的每个项中得出最高阶项n ^ k和具有最大幅度的系数的绝对值(称为a')得到:p(n)=(n ^ k)(a ')(b [0] / n ^ k + b [1] / n ^(k-1)+ ... + b [n])。注意,所有b [n]&lt;因此,我们得到p(n)<1。 (N ^ k)的(A')N。但是p(n)&lt; (n ^ k)(a')n = n ^(k + 1)(a')&lt; = n ^ c。设c = k + 1 + z。然后我们需要n ^(k + 1)(a')&lt; = n ^(k + 1)(n ^ z),如果'&lt; = n ^ z则为真。只要n>在图1中,存在z使得n ^ z> 1。 a'对于任何固定的':选择z&gt; log_n a'。

以另一种方式显示O作为练习。提示:n ^ k&lt; = p(n)。

答案 1 :(得分:0)

第1步

让我们来定义

k := deg(p)
A := max(|ck|, ..., |c0|)

其中cip的系数。然后

|p(n)| <= |ck|n^k + ... + |c1|n + |c0|
       <= A n^k + ... + A n + A
       <= A n^k + ... + A n^k + A n^k
       <= (k+1)A n^k

然后

log(|p(n)|) <= log((k+1)A) + k log(n)
            <= (log((k+1)A) + k) log(n)

因为log是一个增加的函数,1 <= log(n)n >> 1。换句话说

log(|p(n)|) ∈ (log(n))

(请注意,我使用|p(n)|而不是p(n)来包含p(n) < 0的情况。)

第2步

i = 0, 1, ..., k-1让我们定义

di := |ci|/|ck|

s := d_{k-1} + ... + d0

他们的总和。

现在取n0整数n0 >= 2s。对于任何n >= n0我们有

n >= 2s

n/2 >= d_{k-1} + ... + d0
    >= d_{k-1} + ... + d0/n^{k-1}

乘以n^{k-1}

(n^k)/2 >= d_{k-1} n^{k-1} + ... + d0

因此,对于n >= n0我们得到

|p(n)| = |ck n^k + c_{k-1} n^{k-1} + ... + c0|
       = |ck||n^k + c_{k-1}/ck n^{k-1} + ... + c0/ck|
       >= |ck|(n^k - |c_{k-1}/ck n^{k-1} + ... + c0/ck|)
       >= |ck|(n^k - |d_{k-1} n^{k-1} + ... + d0|)
       >= |ck|(n^k - (n^k)/2)
       = |ck|/2 n^k

考虑log

 log(|p(n)|) >= log(|ck|/2) + k log(n) ∈ (log(n))

第一个结论

从上面的步骤1和2开始:

 log(|p(n)|) ∈ (log(n))

第3步

f, g ∈ Θ(h)然后

|f(n) − g(n)| <= |f(n)| + |g(n)|
              <= A h(n) + B h(n)
              <= (A+B)h(n) ∈ (h)

<强>然而

|f(n) − g(n)| ∈ Θ(h)通常不正确。这是一个例子:

 f(n) = n^k + n^{k-1}
 g(n) = n^k

这两个函数都属于Θ(n^k)

|f(n) - g(n)| = n^{k-1} ∈ Θ(n^{k-1}) ≠ Θ(n^k)