1 / 11

演算法分析

演算法分析. 輸入大小 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

joella
Download Presentation

演算法分析

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 演算法分析 • 輸入大小n • 基本運算(如何挑選?) • 時間複雜度分析:不同的輸入大小,演算法所執行的基本運算次數T(n)

  2. 演算法分析 • 所有情況時間複雜度分析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)

  3. 複雜度函數分類 • 常數:c • 線性:an+b • 對數:alogn+b • 線性對數:anlogn+b • 平方:an2+bn+c • 立方:an3+bn2+cn+d • 次方:a2n+b 可以用(n), (logn), (n2), (n3)等來表示 當n很大時,logn < n < nlogn < n2 < n3 < 2n

  4. 演算法分析 • 效率上的分析 • 空間複雜度 (Spacecompllexity) 演算法使用的記憶體空間的大小 • 時間複雜度」(Time complexity) 演算法執行完成所用的時間 真正被執行的程式行的數目 時間的估計方式,常用所謂的「 漸近式表示法 」 提供一個合理的比較標準

  5. 大O演算法分析(上限) 定義:對於給定的複雜度函數f(n),O(f(n))就是由一些複雜度函數g(n) 構成的集合,對於每個g(n),必存在某個正實數常數c與某個非負整數N, 使得對於所有n≧N g(n) ≦ c*f(n) g(n)為f(n)的big O 我們可以把f(n)看成是g(n)在最悲觀的情況下的執行時間,也就是說n的值相當大的時候,g(n) ≦cf(n)。有了漸近式的表示法之後,g(n)=n+2與g(n)=n+195有相同的f(n)=n,表示兩者無法做更進一步的比較 g(n)是我們算出來的,f(n)是我們要去找出來的 相當於擺了一個漸進上限

  6. 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

  7. Big O hw • g(n)=2n2+3n+1,證明g(n)可以用O(n2)來表示,即f(n)=n2 有漸進上限big O 有沒有漸進下限?

  8. Ω演算法分析(下限) 定義:對於給定的複雜度函數f(n),Ω(f(n))就是由一些複雜度函數g(n) 構成的集合,對於每個g(n),必存在某個正實數常數c與某個非負整數N, 使得對於所有n≧N g(n) ≧ c*f(n) g(n)為f(n)的Ω 指解決一個演算法的時間複雜度最少一定超過Ω(f(n)) 那O(f(n))呢? 解決一個算法的時間複雜度一定不會超過O(f(n)) 相當於擺了一個漸進下限

  9. Ω演算法分析 • 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)

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

  11. 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)

More Related