algorithms中計算時間的漸近表示

2021-09-06 12:36:25 字數 1922 閱讀 5369

1.大寫ο符號

大寫ο符號給出了函式f的乙個上限。

定義[大寫ο符號]:f(n)=ο(g(n)),當且僅當存在正的常數c和n0,使得對於所有的n≥n0,有 f(n)≤c*g(n)

上述定義表明,函式f至多是函式g的c倍,除非n小於n0。因此,對於足夠大的n(如n≥n0),g 是 f 的乙個上限(不考慮常數因子 c )。

在為函式 f 提供乙個上限函式 g 時,通常使用比較簡單的函式形式。比較典型的形式是含有 n 的單個項(帶乙個常數係數)。對於對數函式logn,沒有給出對數的基數,是因為對於任何大於1的常數 a 和 b ,都有:logan=logbn/logba所以logan和logbn都有乙個相對的乘法係數1/logba,其中 a 是乙個常量。

2. ω符號

ω符號給出了函式f的乙個下限。

定義[ω符號]:f(n)=ω(g(n)),當且僅當存在正的常數c和n0,使得對於所有的n≥n0,有 f(n)≥c*g(n)。

上述定義表明,函式f至少是函式 g 的 c 倍,除非 n 小於 n0。因此,對於足夠大的n(如n≥n0),g 是 f 的乙個下限(不考慮常數因子c )。與大ο定義的應用一樣,通常使用單項形式的 g 函式。g(n)僅是f(n)的乙個下限,與大ο符號的情形類似,也可能存在多個函式g(n)滿足f(n)=ω(g(n))。

為了使f(n)=ω(g(n))更有實際意義,其中的 g(n) 應足夠大。因此,有3n+3=ω(n),6*2n+n2=ω(n2)。而3n+3=ω(l),6*2n+n2=ω(n)不是所希望的,儘管他們也是正確的。

3. θ符號

θ符號適用於同乙個函式g既可以作為f的上限,也可以作為f的下限的情形。

定義[θ符號]:f(n)=θ(g(n)),當且僅當存在正的常數c1,c2和n0,使得對於所有的n≥n0,有 c1g(n)≤f(n)≤c2g(n)。

定義表明,函式f介於函式g的c1倍和c2倍之間,除非n<n0。因此對於足夠大的n(如n≥n0), g既是f的上限,也是f的下限(不考慮常數因子c)。與大ο定義和ω定義的應用一樣,通常僅使用單項形式的g函式。

4.小寫o符號

定義[小寫o]:f(n)=o(g(n))當且僅當

f(n)=ο(g(n))且f(n)≠ω(g(n))。

圖3.1列出了一些常用的有關ο、ω和θ的標記,其中,除n以外所有符號均為正常數。圖3.1 漸近標記(其中⊕可以ο、ω、θ是之一)

圖3.2給出了一些關於「和」與「積」的有用的引用規則。對於圖3.2的引用規則,大家不難舉例驗證。

在時間或步數的漸近表示中,利用了圖3.1和圖3.2的結論。注意,首先要知道程式完成什麼功能,然後分析程式的執行時間和執行步數,再採用漸近表示記錄它們,最後根據圖3.1和圖3.2得到結果。

有時,可以把ο(g(n))、ω(g(n))和θ(g(n))分別解釋成如下集合:

ο(g(n))=

ω(g(n))=

θ(g(n))=

在這種解釋下,諸如ο(g1(n))=ο(g2(n))和θ(g1(n))=θ(g2(n))這樣的語句就有了明確的含義。因為,此時可以將f(n)=ο(g(n))讀作「f(n)是g(n)的乙個大ο成員」,另外兩種的讀法也類似。

小寫o符號通常用於執行步數的分析。執行步數3n+ο(n)表示3n加上上限為n的項。在進行這種分析時,可以忽略步數少於θ(n)的程式部分。

可以擴充ο、ω、θ和o的定義,採用具有多個變數的函式。例如,

f(m,n)=ο(g(n,m))當且僅當存在正常量c、n0和m0,使得對於所有的n≥n0和所有的m≥m0,有f(m,n)≤c*g(n,m)。

Excel中計算時間差

問題的提出 日期時間1 2005 5 15 9 10 45 日期時間2 2005 9 16 11 10 25 計算 日期時間2 日期時間1 結果表達 天 h mm dd 問題分析及思路 形如 2005 5 15 9 10 45 的日期時間資料可以用日期時間序列值表示。這個值是小數,其中整數部分表示天...

java中計算程式執行的時間

long beforetime system.currenttimemillis long aftertime system.currenttimemillis long timedistance aftertime beforetime system.out.println timedistanc...

SHELL中計算時間差方法

hell 中的時間計算轉為秒做相減運算 某些主機不支援date d的話不能用此法 curtime date y m d h m s 當前的系統時間 2009 05 04 14 34 00 lastline ls lt v dirname line awk 獲取檔案的最後時間 2009 10 04 1...