证明g(n)是o(f(n)),那么f(n)+ g(n)是Theta(f(n))

时间:2016-01-18 21:28:06

标签: algorithm math time-complexity little-o

所以我努力证明(或反驳)上述问题。我觉得这是真的,但我不确定如何展示它。

同样,问题是如果g(n)是o(f(n)),则f(n)+ g(n)是Theta(f(n))

注意,这是一个 little-o 不是一个大的!

到目前为止,我已设法(轻松)证明:

g(n)= o(f(n)) - > g(n)< C * F(N)

然后g(n)+ f(n)< (c + 1)* f(n) - &gt; (g(n)+ f(n))= O (f(n))

然而,为了展示Big Omega,我不知道该怎么做。

我这样做了吗?

编辑:每个人都提供了很大的帮助,但我只能标记一个。谢谢。

3 个答案:

答案 0 :(得分:2)

一种选择是取(f(n)+ g(n))/ f(n)的极限,因为n倾向于无穷大。如果这收敛到有限的非零值,那么f(n)+ g(n)=Θ(f(n))。

假设f(n)对于足够大的n是非零的,则上限的比率是

  

(f(n)+ g(n))/ f(n)

     

= f(n)/ f(n)+ g(n)/ f(n)

     

= 1 + g(n)/ f(n)。

因此,当n变为无穷大时,上述表达式收敛于1,因为该比率变为零(这就是g(n)为o(f(n))的意思。

答案 1 :(得分:1)

到目前为止一切顺利。

下一步,请回想一下0 <= g(n);这应该让你在g(n) + f(n)上下限。

答案 2 :(得分:1)

在开始之前,让我们首先说明little-o和Big-Theta符号的含义:

  

Little-o表示法

     

正式地说,MyPanel(或g(n) = o(f(n)))代表   足够大g(n) ∈ o(f(n))意味着每个正常数n   存在一个常数ε

N

来自https://en.wikipedia.org/wiki/Big_O_notation#Little-o_notation

  

Big-Θ符号

     

|g(n)| ≤ ε*|f(n)|, for all n > N (+) 表示存在正常量h(n) = Θ(f(n))k_1   和k_2Nk_1 · |f(n)|是上限   和k_2 · |f(n)|的{​​{1}}的下限,分别为|h(n)|,即

n > N

来自https://www.khanacademy.org/computing/computer-science/algorithms/asymptotic-notation/a/big-big-theta-notation

鉴于: k_1 · |f(n)| ≤ |h(n)| ≤ k_2 · |f(n)|, for all n > N (++)

因此,在我们的案例中,对于每个g(n) ∈ o(f(n)),对于我们的函数ε>0N,我们可以为(+)找到一些常量g(n)。因此,对于f(n),我们有

n>N

剥离|g(n)| ≤ ε*|f(n)|, for some ε>0, for all n>N Choose a constant ε < 1 (recall, the above holds for all ε > 0), with accompanied constant N. Then the following holds for all n>N ε(|g(n)| + |f(n)|) ≤ 2|f(n)| ≤ 2(|g(n)| + |f(n)|) ≤ 4*|f(n)| (*) 中最左边的不等式并除以2,我们有:

(*)

我们看到这是大约Θ符号的定义,如|f(n)| ≤ |g(n)| + |f(n)| ≤ 2*|f(n)|, n>N (**) 中所示,常量(++)k_1 = 1k_2 = 2。因此

h(n) = g(n)+f(n)

我们已经证明(**) => g(n) + f(n) is in Θ(f(n)) 暗示g(n) ∈ o(f(n))