数値解析第3回 四則演算の誤差伝播...授業資料 質問メールなど [email protected] 数値解析第3回 四則演算の誤差伝播 四則演算を2 ...
演算法分析
description
Transcript of 演算法分析
演算法分析 所有情況時間複雜度分析 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
Ω 演算法分析 ( 下限 )
指解決一個演算法的時間複雜度最少一定超過 Ω(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)