簡體   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