[计算机]演算法简介课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《[计算机]演算法简介课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 演算法 简介 课件
- 资源描述:
-
1、第二十章第二十章 演算法簡介演算法簡介知己知彼,百戰不貽孫子ij+-12341內容內容n前言前言n20.1 演算法分析演算法分析n20.2 個別擊破策略個別擊破策略n20.3 貪婪策略貪婪策略n20.4 動態規劃動態規劃n20.5 刪除與搜尋策略刪除與搜尋策略n20.6 課後習題課後習題n20.7 欲罷不能欲罷不能2前言前言演算法(Algorithm)n電腦上解決問題的方法n包括明確的輸出入資料和詳細且有限的執行步驟n了解每個演算法在不同狀況下所花的時間,而從中挑選適合的演算法以迅速得到答案n演算法設計策略320.1 演算法分析演算法分析在電腦上解決問題的基本架構在電腦上解決問題的基本架構n演
2、算法以程式描述後在電腦上執行,資料輸入至程式後,經過程式對資料的運算,最後產生解答資料演算法(程式)圖 20.1解答4時間複雜度時間複雜度(Time Complexity)n假設演算法 A 能解問題Pn問題P的輸入資料量為Nn假設資料量為N的資料樣本(Data Instance)有 D1,D2,.,Di,.,Dm 共 m 種n令 T(Di)表示當輸入資料為 Di 時演算法 A 要執行的運算或步驟的總次數n演算法 A 的最好狀況時間複雜度最好狀況時間複雜度(Best-Case Time Complexity)n T(Di)(1 i m)中最小的值,即min1 i m T(Di)5時間複雜度時間複
3、雜度(cont.)n演算法 A 的最差狀況時間複雜度最差狀況時間複雜度(Worst-Case Time Complexity)n T(Di)(1 i m)中最大者,即max1 i m T(Di)n演算法A的一般狀況時間複雜度一般狀況時間複雜度(Average-Case Time Complexity)nT(Di)(1 i m)的平均值或期望值(在某機率假設下)n說“演算法A的時間複雜度為C”就是指其最差狀況時間複雜度為C6時間複雜度時間複雜度(cont.)範例n若問題P之輸入資料量為 N 的樣本有D1,D2,D3 三種,且 T(D1)=3,T(D2)=N,T(D3)=N3 n演算法 A 的 最
4、好狀況時間複雜度為 3 n演算法 A 的最差狀況為 N3n演算法 A 的一般狀況為(3+N+N3)/3 n稱演算法 A 的時間複雜度為 N37漸近上限漸近上限(Asymptotic Upper Bound)O階次階次n如果存在某固定正實數 c 及某個非負整數 m 使得對所有的 n m,不等式 g(n)c f(n)都成立,則 g(n)=O(f(n),稱 f(n)為 g(n)的漸近上限 Example:nN2+10N=O(N2),因為當n 10 時,N2+10N 2N2n稱N2為N2+10N的漸進上限8漸近下限漸近下限(Asymptotic Lower Bound)階次階次n若存在某固定正變數 c
5、 及某非負整數 m 使得對所有 n m,不等式 g(n)c f(n)都成立,則 g(n)=(f(n),稱 f(n)為 g(n)的漸近下限 Examplenn3=(n2),因為當n 1時,n31 n2,所以n2為n3的漸近下限。9真正階次真正階次(Exact Order)n若存在某固定正變數 c 及某非負整數 m 使得對所有 n m,不等式 g(n)c f(n)都成立,則 g(n)=(f(n),稱 f(n)為 g(n)的漸近下限 ExamplenN2+10N=(N2),因為 N2+10N=O(N2)且 N2+10N=(N2)。10真正階次真正階次(cont.)n當n足夠大時,2n n3 n2 n
6、logn n lognf(n)n2nn3n2nlognNlogn121101024840.60205999120.30102999641664162.40823996540.6020599918256512647.22471989680.9030899871665536409625619.26591972161.20411998332429496729632768102448.16479931321.505149978641.84467E+192621444096115.5955183641.8061799741283.40282E+38209715216384269.72287611282.
7、107209972561.15792E+771677721665536616.50943112562.4082399655121.3408E+1541342177282621441387.146225122.70926996111指數函數分析指數函數分析指數函數(Exponential Function)n例如:f(n)=cp(n),其中c為常數,p(n)為n的多項式函數(Polynomial Function)(如n,n2+10,log2n,nlog2n)nExample:2n、3n、4logn等函數n函數值上升速度相當快時間複雜度為指數函數階次的演算法在資料量足時間複雜度為指數函數階次的演
8、算法在資料量足夠多時需要相當長的時間才能解得答案夠多時需要相當長的時間才能解得答案12多項式時間演算法多項式時間演算法(Polynomial-Time Algorithm)n時間複雜度是O(p(n)的演算法,其中p(n)為n的多項式函數電腦上可解電腦上可解(Tractable)的問題的問題n能用多項式時間演算法解得答案的問題,即能用電腦在合理時間內求得答案n例如:排序及搜尋等問題13排序法及搜尋法的時間複雜度排序法及搜尋法的時間複雜度 時間複雜度演算法最好狀況最差狀況插入排序O(n)O(n2)氣泡排序O(n)O(n2)謝耳排序O(n)O(n2)兩兩合併排序O(n)O(nlog2n)循序搜尋O(
9、1)O(n)二分搜尋O(1)O(log2n)14最佳演算法最佳演算法(Optimal Algorithm)n若可解問題P的演算法A的時間複雜度為t,而解問題P的演算法最少需要t時間,則稱演算法A是解問題P的最佳演算法最佳演算法 n例如:兩兩合併排序法是最佳排序演算法n排序n個數的問題最少需要O(nlog2n)時間n兩兩合併排序法的時間複雜度是O(nlog2n)15難解問題難解問題(Intractable Problem)n若問題P無法以多項式時間演算法解得答案,則問題P無法於電腦上在合理時間內求得答案,稱問題P為難解問題,或NP-Complete問題Examplen旅行推銷員問題(Travel
10、ling Salesman Problem)n圖形塗色問題(Graph-Coloring Problem)n裝箱問題(Bin-Packing Problem)1620.2 個別擊破策略個別擊破策略(Divide-and-Conquer Method)n將原來的問題P分解成2個或多個子問題n待個別解決這些子問題後再經由合併(merge)處理整理出原來問題的答案n因為分割後的子問題是資料量較小的問題P,因此解子問題時又可遞迴應用上述的方法經由分割及合併的過程得到解答nExample:二分搜尋法,兩兩合併排序法17兩兩合併排序法兩兩合併排序法n一開始就將資料分割成兩部份處理,然後再遞迴細分各資料直至
11、不能細分為止n接著就兩兩合併成排序的序列,慢慢的將分割的資料合併成排序的序列,最後得到所有資料的排序結果1062717324556106271732455610627173245561062717324556610172743256561017274532564561017273256分割分割分割分割分割分割合併合併合併合併合併合併18二分搜尋法二分搜尋法 n假設陣列D中依序放有4,3,5,2,6,7,1等七個整數,目標是將這些數依小到大順序排序n首先觀察第一個數4在最後排序好的序列中應是第四位即應放在D(4)n如果能將不大於4的數放在D(1)至D(3)中而不小於4的數放在D(5)至D(7)中
12、則只要再分別排序好D(1)至D(3)的數及D(5)至D(7)內的數那原來排序問題就解決了19二分搜尋法二分搜尋法(cont.)方法n令i=2j=7n從D(i)開始向右找到第一個不小於D(1)的數以i記錄其陣列的索引n從D(j)開始向左找到第一個不大於D(1)的數以j記錄其陣列索引n若i N THEN3 I=M4 J=N+15 K=D(M)6 DO7 DO8 I=I+19 LOOP UNTIL D(I)=K10 DO11 J=J-112 LOOP UNTIL D(J)=K13 IF I J THEN14 K=D(I)15 D(I)=D(J)16 D(J)=K17 ELSE18 EXIT DO19
13、 END IF20 LOOP21 K=D(M)22 D(M)=D(J)23 D(J)=K24 QSORT(M,J-1)25 QSORT(J+1,N)26END IF27END SUB23快速排序法快速排序法(cont.)快速排序法n最差時間複雜度為O(n2),其中n為資料個數 n一般狀況時間複雜度為O(nlog2n)個別擊破策略常用於計算幾何個別擊破策略常用於計算幾何(Computational Geometry)的應用問題的應用問題2420.3 貪婪策略貪婪策略(Greedy Method)n每次的決策都是朝向目前“最好”的方向前進n櫃檯服務問題n某一個銀行出納櫃檯要服務n位顧客,銀行的目標
14、是希望顧客在櫃檯等待的平均時間要最少n解決之道是每次都從尚未服務的顧客中,選擇需要服務時間最短的顧客來服務,如此就可達到預期目標25貪婪策略貪婪策略-實例說明實例說明n假設有5個顧客A,B,C,D,E幾乎同時到達銀行櫃檯,其所需服務時間如表所示n銀行櫃檯將依序服務B,D,E,C,An顧客在櫃檯等待的平均時間為 1+(1+2)+(1+2+3)+(1+2+3+4)+(1+2+3+4+5)/5=7 顧顧 客客服服 務務 時時 間間A 5B 1C 4D 2E 326背包問題背包問題(Knapsack Problem)n假設有多個可分解的物件和一只限重W的背包n每件物件有其重量及其被選取放入背包內的利益
15、n請問要如何將物件放進背包內而使得獲得的利益最大n解決的方法:n是每次在限重的情形下,選取尚未放入的物件中擁有最大的利益與重量的比值之物件放入背包內。27背包問題背包問題-實例說明實例說明n設背包限重100,有A,B,C,D,E共五個物件,其資料如表所示物件物件重量重量利益利益利益利益/重量重量A10202.0B20301.5C30662.2D40401.0E50601.228背包問題背包問題-實例說明實例說明(cont.)解法n依利益/重量由大至小順序放入物件,即C,A,B,E,D順序考慮物件物件個數個數累計利益累計利益累計重量累計重量C16630A18640B111660E0.816410
16、029最小擴展樹最小擴展樹(Minimum Spanning Tree)右圖n由頂點(Vertex)及邊(Edge)構成n每一邊都連接兩頂點,可指定其加權(Weight),分有向和無向兩種n圓圈代表頂點n連接兩頂點的線為邊n每個邊都有非負的加權 n例如頂點V3與頂點V5間的邊之加權為5 31456872V2V3V1V4V530最小擴展樹最小擴展樹(cont.)n無向圖(Undirected Graph):均是無方向邊的圖形。n無向圖的路徑(Path):由頂點構成的序列,其中序列裏每個頂點與其後一個頂點之間必有邊相連n例如V1,V5,V2是一條從頂點V1到頂點V2的路徑。n聯通圖(Connect
展开阅读全文