簡體   English   中英

證明大O符號

[英]Proving Big O notation

證明5n ^ 2 + 2n -1 = O(n ^ 2) 到目前為止,這是我嘗試過的:

    5n^2 + 2n -1 <= 5n^2 + 2n^2 -n2 for n>1
    5n^2+ 2n -1 <= 6n^2  for n>1
    5n^2+ 2n -1 = O(n^2) [ c = 6n^2, n0 = 1 ]

這是證明Big O符號的正確方法嗎?

為了證明您的表達式是O(n^2) ,您需要證明它受M*n^2 (對於某個常數M和某個最小值n 通過檢查,我們可以證明您的表達式的邊界是10*n^2 ,其中n=10

對於n = 10

5n^2 + 2n -1 <= 10*n^2
500 + 20 - 1 <= 1000
519 <= 1000

我們還可以證明,對於任何大於 10的值n ,表達式都以10*n^2為界:

對於n > 10

5n^2 + 2n -1 <= 10*n^2
5*(10+i)^2 + 2*(10+i) -1      <= 10*(10+i)^2
5*(i^2 + 20i + 100) + 2i + 19 <= 10*(i^2 + 20i + 100)
2i + 19 <= 5*(i^2 + 20i + 100)
2i + 19 <= 5i^2 + 100i + 500
5i^2 + 98i + 481 >= 0, which is true for `i > 0`

這是Wikipedia關於Big-O符號的文章的鏈接:

https://zh.m.wikipedia.org/wiki/Big_O_notation

更新:

請注意,實際上,為了標記您的表達式O(n^2)我們不會采用這種難看的書面證明。 取而代之的是,我們將認識到n^2項將主導大n的表達式,並且總體行為將為O(n^2) 而且您的表達式也是O(n^3) (和O(n^4)等)。

我們有f(n)= 5 * n ^ 2 + 2 * n-1和g(n)= n ^ 2

為了證明f(n)= O(g(n)),我們只需要找到2個常量,即c> 0和n_0,對於所有n> = n0,st f(n)<= cg(n)。

讓我們選擇一些c = 5.5的值。 讓我們評估並繪制f(n)和c * g(n)。 從圖中可以看到,並且由於n ^ 2/2-2 * n +1 =(n ^ 2-4 * n + 2)/ 2 =((n-2)^ 2- 2)/ 2> = 0對於所有n> = 4,這意味着5 * n ^ 2 + 2 * n-1 <= 5.5 * n ^ 2對於所有n> = n0 = 4.因此,f(n) = O(g(n))。 (證明了)

在此處輸入圖片說明

看起來不錯,我在想,如果您是在做分配工作或其他形式工作,那么您也可以以更形式化的方式進行,例如選擇常數(c)的值,例如通過f(n)/ g(n),否則看起來正確

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM