對於乙個給定的函式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→∞limg
(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→∞limg
(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 都是...