《演算法導論》學習筆記之三 函式增長

2021-08-31 06:50:48 字數 2065 閱讀 2655

對於乙個給定的函式g(n),用θ

\theta

θ(g(n))來表示以下函式的集合:

θ (g

(n))

=\theta(g(n))=\、c_和n_,使得對所有n≥ n_,有0≤c_(n)≤f(n)≤c_g(n) \}

θ(g(n)

)=θ

\theta

θ(g(n))的定義要求每個成員f(n)∈

\in∈θ

\theta

θ(g(n))均為漸近非負,即當n足夠大時,f(n)非負。

當只有乙個漸近上界時,使用o記號。對於給定的函式g(n),用o(g(n))(讀作「大o(g(n))」)來表示以下函式的集合:

o (g

(n))

=o(g(n))=\,使得對所有n≥ n_,有0≤f(n)≤cg(n) \}

o(g(n)

)=ω

\omega

ω記號提供了漸近下界。對於給定的函式g(n),用ω

\omega

ω(g(n))(讀作「大ω

\omega

ω(g(n))」)來表示以下函式的集合:

ω (g

(n))

=\omega(g(n))=\,使得對所有n≥ n_,有0≤cg(n)≤f(n) \}

ω(g(n)

)=由o記號提供的漸近上界可能是也可能不是漸近緊確的。界2n2=o(n2)是漸近緊確的,但是界2n=o(n2)卻不是。我們使用o記號來表示乙個非漸近緊確的上界。形式化地定義o(g(n))為以下集合:

o (g

(n))

=o(g(n))=\>0,使得對所有n≥ n_,有0≤f(n)o(

g(n)

)=例如2n=o(n2),但是2n2≠o(n2)。

o記號與o記號的定義類似。主要的區別是在f(n)=o(g(n))中,界0≤f(n)≤cg(n)對某個常量c>0成立,但在f(n)=o(g(n))中,界0≤f(n)0成立。直觀上,在o記號中,當n趨於無窮時,函式f(n)相對於g(n)來說變得微不足道了,即:

lim ⁡n

→∞f(

n)g(

n)=0

\lim_ \frac=0

n→∞lim​g

(n)f

(n)​

=0ω

\omega

ω記號與ω

\omega

ω記號的關係類似於o記號與o記號的關係。我們使用ω

\omega

ω記號來表示乙個非漸近緊確的下界。定義它的一種方式是:

f (n

)∈ω(

g(n)

)當且僅

當g(n

)∈o(

f(n)

)f(n)\in \omega(g(n)) 當且僅當g(n)\in o(f(n))

f(n)∈ω

(g(n

))當且

僅當g(

n)∈o

(f(n

))然而,我們形式化地定義定義ω(g

(n))

\omega(g(n))

ω(g(n)

)為以下集合:

ω (g

(n))

=\omega(g(n))=\>0,使得對所有n≥ n_,有0≤cg(n)ω(

g(n)

)=假如:n2/2=ω(n

)\omega(n)

ω(n)

,但是n2/2≠ω(n

)\omega(n)

ω(n)

。關係f(n)= ω(g

(n))

\omega(g(n))

ω(g(n)

)蘊涵著

lim ⁡n

→∞f(

n)g(

n)=∞

\lim_ \frac=\infty

n→∞lim​g

(n)f

(n)​

=∞也就是說,如果這個極限存在,那麼當n區域無窮大時,f(n)相對於g(n)來說變得任意大了。

演算法導論 函式的增長。

因為在計算機程式設計的學習中,我們需要掌握乙個類似於 需求量 的東西,怎麼去理解需求量呢,舉個最簡單的例子,你有乙個雙層迴圈,這個雙層迴圈所需要的時間,就是乙個增長量。具體一點可以這麼去解釋這個問題,如果你在乙個迴圈裡面的每乙個步驟所需要的時間都不同的話,那麼 你的需求量就是乙個分布式的增長。我們需...

函式的增長 演算法導論 2

1.引言 這一章主要是介紹一些概念,雖然很乏味,但是它確實能夠幫助我們去更好的分析 處理問題。2.漸進記號 1 記號 g n 通俗地講,若存在正常數才c1,c2,使得對於足夠大的n,函式f n 能 夾入 c1 g n 與c2 g n 之間,則f n 屬於集合 g n 通常把f n g n 記為f n...

《演算法導論》筆記 第3章 函式的增長

第3章 函式的增長 漸進記號 記號對任乙個函式f n 若存在正常數c1,c2,使當n充分大時,f n 能被夾在c1g n 和c2g n 中間,則f n 屬於集合 g n 因為 g n 是乙個集合,可以寫成 f n g n 表示f n 是 g n 的元素。g n 的定義需要每個成員f n g n 都是...