演算法分析

11
演演演演演 演演演演 n 演演演演 ( 演演演演 ?) 演演演演演演演 演演演演演演演演 演演演演演演演演演演演演演 :, T(n)

description

演算法分析. 輸入大小 n 基本運算 ( 如何挑選 ?) 時間複雜度分析:不同的輸入大小,演算法所執行的基本運算次數 T(n). 演算法分析. 所有情況時間複雜度分析 T(n) 最差情況時間複雜度分析 W(n) ,如果 T(n) 存在, T(n)=W(n) 平均情況時間複雜度分析 A(n) ,如果 T(n) 存在, T(n)=A(n) 最佳情況時間複雜度 B(n) ,如果 T(n) 存在, T(n)=B(n). 複雜度函數分類. 常數: c 線性: an+b 對數: alogn+b 線性對數: anlogn+b 平方: an 2 +bn+c - PowerPoint PPT Presentation

Transcript of 演算法分析

演算法分析 輸入大小 n 基本運算 ( 如何挑選 ?) 時間複雜度分析:不同的輸入大小,演

算法所執行的基本運算次數 T(n)

演算法分析 所有情況時間複雜度分析 T(n) 最差情況時間複雜度分析 W(n) ,如果

T(n) 存在, T(n)=W(n) 平均情況時間複雜度分析 A(n) ,如果

T(n) 存在, T(n)=A(n) 最佳情況時間複雜度 B(n) ,如果 T(n)

存在, T(n)=B(n)

複雜度函數分類 常數: c 線性: an+b 對數: alogn+b 線性對數: anlogn+b 平方: an2+bn+c 立方: an3+bn2+cn+d 次方: a2n+b

當 n 很大時, logn < n < nlogn < n2 < n3 < 2n

可以用 (n), (logn), (n2), (n3) 等來表示

演算法分析 效率上的分析 空間複雜度 ( Spacecompllexity)

演算法使用的記憶體空間的大小 時間複雜度」( Time complexity)

演算法執行完成所用的時間真正被執行的程式行的數目 時間的估計方式,常用所謂的「 漸近式表示法 」提供一個合理的比較標準

大 O 演算法分析 ( 上限 )

我們可以把 f(n)看成是 g(n)在最悲觀的情況下的執行時間,也就是說 n 的值相當大的時候, g(n) ≦ cf(n)。有了漸近式的表示法之後, g(n)=n+2與 g(n)=n+195有相同的f(n)=n,表示兩者無法做更進一步的比較

定義:對於給定的複雜度函數 f(n) , O(f(n))就是由一些複雜度函數 g(n)構成的集合,對於每個 g(n),必存在某個正實數常數 c 與某個非負整數 N ,使得對於所有 n≧N g(n) ≦ c*f(n) g(n) 為 f(n) 的 big O

g(n) 是我們算出來的, f(n) 是我們要去找出來的相當於擺了一個漸進上限

Big O

g(n)=4n+10 ,則 g(n) 可以用 O(n) 來表示,即 f(n)=n

證明: g(n) ≦ c*f(n)4n+10 ≦ cn (c-4)n ≧10可以取 c=5 n ≧ 10 N=10所以只要 c ≧ 5, n≧10 時4n+10 ≦ 5n

Big O hw

g(n)=2n2+3n+1 ,證明 g(n) 可以用O(n2) 來表示,即 f(n)=n2

有漸進上限 big O有沒有漸進下限?

Ω 演算法分析 ( 下限 )

指解決一個演算法的時間複雜度最少一定超過 Ω(f(n))那 O(f(n))呢?

定義:對於給定的複雜度函數 f(n) , Ω(f(n))就是由一些複雜度函數 g(n)構成的集合,對於每個 g(n),必存在某個正實數常數 c 與某個非負整數 N ,使得對於所有 n≧N g(n) ≧ c*f(n) g(n) 為 f(n) 的 Ω

相當於擺了一個漸進下限

解決一個算法的時間複雜度一定不會超過 O(f(n))

Ω 演算法分析 g(n)=4n+10 ,則 g(n) 可以用 Ω(n) 來

表示,即 f(n)=n證明: g(n) ≧ c*f(n)4n+10 ≧ cn (4-c)n ≧ -10可以取 c=1 n=1所以只要 c=1, n ≧ 1 時f(n)=Ω(n)

Ω hw

g(n)=2n2+5n+2 ,證明 g(n) 可以用Ω(n2) 來表示,即 f(n)=n2

Big O & Ω

定義:對於給定的複雜度函數 f(n)

(f(n))=O(f(n)) Ω(f(n))

代表 (f(n)) 是由一些複雜度函數 g(n)構成的集合,對於每個 g(n),必存在某個正實數常數 c 與 d 及某個非負整數 N ,使得對於所有 n>=N c*f(n) ≦g(n) ≦ d*f(n)