![](/img/trans.png)
[英]Is it possible to prove that f(n) + g(n) = theta(n^2) for f(n) = theta(n^2) & g(n) = O(n^2)
[英]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_1
,k_2
和N
,因此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 (++)
給定: 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 = 1
, k_2 = 2
且h(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.