我正在閱讀我的Java III課程的教科書。我們正在閱讀關於Big-Oh的消息,我對它的正式定義有點困惑。 (n) - 即f(n)= O(g(n)) - 如果一個正實數c和正整數N存在,使得對於所有n> = N,f(n)= cg(n)。也就是說,當n足夠大時,cg(n)是f(n)的上限。Big Oh Notation - 正式定義
好的,這是有道理的。但是且慢,請繼續閱讀...這本書給了我這個例子:
「在段9.14,我們說,使用5N + 3個操作 是O(n)的 算法現在,我們可以展示。該5N + 3 = 爲O(n)通過使用 大哦的正式定義。
當n> = 3,5N + 3 < = 5N + N = 6N。 因此,如果我們讓F(N )= 5n + 3,g(n)= n,c = 6,N = 3,我們已經表明當n≥3時或者5n + 3 = O(n)。也就是說,如果算法那麼 需要與時間成正比的關係,所以它是O(n)。「
好的,這種對我有意義。 他們說如果n = 3或更大,5n + 3比n小於3的時間少 - 因此5n + n = 6n - 對嗎?有意義,因爲如果n是2,5n + 3 = 13而6n = 12,但是當n大於等於3時,5n + 3總是小於或等於6n。
這裏是我困惑的地方。他們給我一個例子:
例2:「讓我們表明,4N^2 + 50N - 10 =爲O(n^2)這是很容易看到:4N^2 + 50N - 10 < = 4N^2 + 50N 對任意n由於50N < = 50N^2 n個
= 50,4N^2 + 50N - 10 < = 4N^2 + 50N^2 = 54N^2對於n> = 50。因此,在c = 54和N = 50的情況下,我們已經證明4n^2 + 50n-10 = 0(n^2)。「
這種說法沒有任何意義:50N < = 50N^2對n> = 50
是不是任意n打算讓50N小於50N^2?不只是大於或等於50?爲什麼他們甚至提到50n < = 50n^2?這與問題有什麼關係?對於n> = 50,無論n是多少,4n^2 + 50n - 10 < = 4n^2 + 50n^2 = 54n^2將是真實的。
在世界上如何挑選數字表明f(n)= O(g(n))?
阿德里安謝謝你。通讀你的解釋讓事情變得更加清晰。你應該當老師! – ShrimpCrackers 2010-05-02 20:59:28