1. 程式人生 > >算法分析| 小o和小ω符號

算法分析| 小o和小ω符號

都是 得到 size center 將不 是否 效率 geeks mce

漸近分析主要思想是對不依賴於機器特定常數的算法的效率進行測量,主要是因為該分析不需要實現算法並且要比較程序所花費的時間。我們已經討論了三個主要的漸近符號使用以下2個漸近符號表示算法的時間復雜度。

小ο漸近符號

大O被用作算法努力的增長的緊密上限(這個努力由函數f(n)描述),盡管如上所述,它也可以是松散的上限。“ο”(ο())表示法用於描述不能緊的上限。

定義:令f(n)和g(n)是將正整數映射到正實數的函數。如果對於任何實常數c> 0,則f(n)是ο(g(n))(或f(n)∈(g(n))),存在整數常數n0≥1,使得f (n)0. 它的意思是小o()表示f(n)的松散上限 在數學關系中,

f(n)= o(g(n))表示 lim f(n)/ g(n)= 0 n→∞
技術分享






例如:

7n + 8∈o(n 2)?
為了這樣做,對於任何c,我們必須能夠找到使
f(n)<c * g(n)漸近為真的n0
讓我們舉個例子,
如果c = 100,我們檢查不平等是否明確。如果c = 1/100,我們將不得不使用
更多的想象力,但是我們可以找到一個n0。(嘗試n0 = 1000.)從
這些例子中,推測似乎是正確的。
然後檢查限制,
lim f(n)/ g(n)= lim(7n + 8)/(n 2)= lim 7 / 2n = 0(l‘hospital)
n→ n→n→

因此7n + 8∈o(n 2

小的ω漸近符號

定義: 令f(n)和g(n)是將正整數映射到正實數的函數。

我們說f(n)是ω(g(n))(或f(n)∈ω(g(n)))如果對於任何實常數c> 0,存在整數常數n0≥1, (n)> c * g(n)≥0,對於整數n≥n0。

f(n)具有比g(n)更高的增長率,因此大歐米茄(Ω)和小歐米茄(ω)之間的主要差異在於它們的定義。在大歐米茄f(n)=Ω(g(n )),並且邊界為0 <= cg(n)0,但是在小的Ω的情況下,對於所有常數c> 0都是如此。

我們使用ω表示法來表示不漸近緊的下界。
f(n)∈ω(g(n))當且僅當g(n)∈ο((f(n))),

在數學關系中,
如果f(n)∈ω ,

lim f(n)/ g(n)=∞

n→∞示例:

證明4n + 6∈ο(1);


ω(ο)運行時間可以通過應用下面給出的限制公式來證明。
如果lim f(n)/ g(n)=∞,則函數f(n)為ο(g(n))
n→∞
這裏,我們有函數f(n)= 4n + 6和g(n)= 1
lim(4n + 6)/(1)=∞
n→∞ ,對於任何c,我們可以得到n0為這個不等式0 <= c * g(n)<f(n),0 <= c * 4n + 6
因此證明。

算法分析| 小o和小ω符號