O符号代数

时间:2018-01-13 09:51:40

标签: algorithm big-o algebra

我需要证明(N + 1)(Hn + 0(1))= NlnN + O(N)。

之前使用Hn = lnN + O(1)的近似值。 只是通过扩展它。

= N(lnN + O(1))+ O(N)+(lnN + O(1))+ O(1)

= NlnN + O(N)+ O(N)+ lnN + O(1)+ O(1)

我们忽略了额外的O(N)和恒定的运行时间 但是lnN会发生什么呢,因为它比NlnN渐近地小,所以我们可以忽略它? 不确定我的理解是否完全错误。

2 个答案:

答案 0 :(得分:0)

唯一需要证明的是O(N) + lnN = O(N)。这应该很容易 - 线性函数比对数增长得更快。只需使用big-O的定义进行证明。

答案 1 :(得分:0)

可能你已经定义了复杂类的代数,并且知道+,*和=是什么意思,在这种情况下,它只是应用这个代数的公理(或简单定理)的问题,但如果没有你必须更加小心他们的意思,否则你的证据确实不合理。

(N + 1)(H(N)+ O(1))是具有(N + 1)(H(N)+ f(N))形式的函数类,其中f是O( 1)和NlnN + O(N)是NlnN + g(N)形式的函数类,其中g是O(N)。等号是类等价。你可以通过说第一类是第二类的子集来证明它,反之亦然。

无论如何,现在我们实际证明的更清楚,我们可以继续前进。我将证明一个等价的方向,让你做(稍微更难)反方向。

假设我们有一个形式为(N + 1)(H(N)+ f(N))的函数,其中f是O(1)。

然后存在C,使得对于大N,(N + 1)(H(N)+ f(N))&lt; =(N + 1)(H(N)+ C)。 类似地,存在D,使得对于大N,H(N)<= lnN + D.将这两者组合在一起,我们具有大的N,(N + 1)(H(N)+ F(N))&lt ; =(N + 1)(lnN + E)(其中E = C + D)。

这等于NlnN + lnN +(N + 1)E。由于lnN +(N + 1)E是O(N),我们已经证明了我们的函数在NlnN + O(N)中。因此(N + 1)(H(N)+ O(1))是NlnN + O(N)的子集。