繁体   English   中英

证明g(n)为o(f(n)),则f(n)+ g(n)为Theta(f(n))

[英]Proving if g(n) is o(f(n)), then f(n) + g(n) is Theta(f(n))

因此,我正在努力证明(或证明)上述问题。 我觉得这是真的,但是我不确定如何显示它。

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

注意,那是一个小o不是大o !!!

到目前为止,我已经成功地(轻松地)证明了:

g(n)= o(f(n)) -> g(n)<c * f(n)

然后g(n)+ f(n)<(c + 1)* f(n) -> (g(n)+ f(n))= O (f(n))

但是,对于显示Big Omega,我不确定该怎么做。

我要这样做吗?

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

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

假设对于足够大的n,f(n)不为零,则上述比率在极限范围内为

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

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

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

因此,当极限为n到无穷大时,由于该比率变为零(因此g(n)为o(f(n)),因此上述表达式收敛为1。

到现在为止还挺好。

对于下一步,请记住最好的情况是0 <= g(n) ; 这应该给你g(n) + f(n)的下界。

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

小o表示法

形式上, g(n) = o(f(n)) (或g(n) ∈ o(f(n)) )对于足够大的n成立,意味着对于每个正常数ε都有一个常数N使得

 |g(n)| ≤ ε*|f(n)|, for all n > N (+) 

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

大Θ符号

h(n) = Θ(f(n))表示存在正常数k_1k_2N ,因此k_1 · |f(n)| k_2 · |f(n)| |h(n)|的上限和下限 分别对于n > N ,即

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

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


给定: g(n) ∈ o(f(n))

因此,在我们的情况下,对于每个ε>0 ,对于函数g(n)f(n) ,我们可以找到一些常数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                            (**) 

我们看到,这是定义非常清晰的Big-Θ符号,如(++) ,常数k_1 = 1k_2 = 2h(n) = g(n)+f(n) 因此

(**) => g(n) + f(n) is in Θ(f(n))

Ans我们已经证明g(n) ∈ o(f(n))意味着(g(n) + f(n)) ∈ Θ(f(n))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM