c 資料結構及演算法

2021-09-24 21:29:07 字數 1348 閱讀 9144

ω

\omega

ω表示法與θ

\theta

θ表示法

大o表示法表示函式的上界。對應於大o表示法,存在下界的定義:

定義:若存在正數c和n,對於所有的n>=n,有f(n)>=cg(n),則f(n)=ω

\omega

ω(g(n))。

上述定義表明,如果有一正數c,對於所有的n,是f不小於cg,則f是g的大ω

\omega

ω表示,換句話說,cg(n)是f(n)的下界,f至少以g的速度增長。

該定義與大o表示法定義的唯一不同是不等式的方向。將》=換成<=,從而將乙個定義變成另外乙個定義,可以用乙個等式來表示兩符號之間的聯絡:

當且僅當g(n)=o(f(n))時f(n)=ω

\omega

ω(g(n))

ω

\omega

ω符號與大o符號一樣都有冗餘問題,常數c和n有無限多種選擇,對於2n2+3n+1>=cn2成立。如果c<=2,那麼任意的n>=0;該不等式都成立。其中2是這個不等式的極限。另外,如果f=ω

\omega

ω(g)成立,就能找到無限多個g,出於實際需要我們只對最接近ω

\omega

ω(即最大的下界)感興趣每次選擇f的ω

\omega

ω時只考慮最接近的ω

\omega

ω。函式f有無限多個可能的下界,也就是說,與f有無限多個上界一樣,f也有無限多個下界,使f(n)=ω

\omega

ω(g(n))成立,為了避免混淆,只考慮最小上界和最大下界。注意兩個符號的等號,它指出了大o表示和ω

\omega

ω表示的公共部分,在大o中使用的是<=,在ω

\omega

ω定義中使用的是<=,在兩個不等式中可以約束上界和下界。以下定義可以描述這種約束:

定義:若存在正數c1、c2及n,對於所有的n>=n,有c1g(n)<=f(n)<=c2g(n),則f(n)=θ

\theta

θ(g(n)).

上述定義表明,f(n)=o(g(n)),且f(n)=ω

\omega

ω(g(n)),則f(n)=θ

\theta

θ(g(n))。

剛才列出的函式中,既是大o表示法又是ω

\omega

ω表示的函式是n2,但這並不是唯一的,有無限多個選擇如2n2、3n2都是函式的θ

\theta

θ,但顯然最簡單的是n2。

在任何一種表示法(o,ω

\omega

ω,θ\theta

θ)下,都是近似表示。

c 資料結構及演算法

大o表示法 最常用來描述漸進複雜度引入大o表示法,給定兩個正值函式f和g。定義 如果存在正數c和n,對於所有的n n,有f n cg n 則f n o g n 上述定義表明,如果對於足夠大的n 或大於某自然數的n的n 存在正數c時f不大於cg,則f為g的大o表示法 f n 2n2 3n 1 o n2...

資料結構及演算法

總所周知,程式的實質就是 對資料的表示,以及對資料的處理。資料要能被計算機處理,首先必須能夠儲存在計算機的記憶體中,這項任務就是資料的表示,其核心就是資料結構。對乙個實際問題的求解必須滿足實際處理的要求,這項任務就是資料處理,其核心是演算法。有這樣乙個著名公式 是誰提出的有點記不住了 資料結構 演算...

資料結構及演算法

最近常看到一些同行常提到資料結構和演算法,這個問題有時候面試會常常遇到,讓你說一下關於資料結構的理解,結常看到網上一些同行對資料結構的解釋和看法,差不多也都各有千秋吧 同時感覺好多人都對資料結構的理解不是很清楚,那怕是平時的開發過程中常用到資料結構及演算法,但是一但回答起這個問題來,感覺就是無從說起...