數(shù)據(jù)結(jié)構(gòu)-算法與算法分析ppt課件_第1頁
數(shù)據(jù)結(jié)構(gòu)-算法與算法分析ppt課件_第2頁
數(shù)據(jù)結(jié)構(gòu)-算法與算法分析ppt課件_第3頁
數(shù)據(jù)結(jié)構(gòu)-算法與算法分析ppt課件_第4頁
數(shù)據(jù)結(jié)構(gòu)-算法與算法分析ppt課件_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第一章第一章 緒論緒論1.1 什么是數(shù)據(jù)構(gòu)造什么是數(shù)據(jù)構(gòu)造1.2 根本概念和術(shù)語根本概念和術(shù)語1.4 算法和算法分析算法和算法分析1.3 籠統(tǒng)數(shù)據(jù)類型的表示與實現(xiàn)籠統(tǒng)數(shù)據(jù)類型的表示與實現(xiàn)一、算法一、算法二、算法設(shè)計的要求二、算法設(shè)計的要求三、算法效率的度量三、算法效率的度量四、算法的存儲空間需求四、算法的存儲空間需求1.4 算法和算法分析算法和算法分析1 1有窮性有窮性 2 2確定性確定性 3 3可行性可行性4 4有輸入有輸入 5 5有輸出有輸出一、算法一、算法 算法算法algorithmalgorithm:是對特定問題求解步驟的一種:是對特定問題求解步驟的一種描畫,它是指令的有限序列,其中每

2、一條指令表示一個或描畫,它是指令的有限序列,其中每一條指令表示一個或多個操作。多個操作。 一個算法還具有以下一個算法還具有以下5個重要特性:個重要特性: 1 1有窮性有窮性 對于恣意一組合法輸入值,對于恣意一組合法輸入值,在執(zhí)行有窮步驟之后一定能終了,即:在執(zhí)行有窮步驟之后一定能終了,即:算法中的每個步驟都能在有限時間內(nèi)完成;算法中的每個步驟都能在有限時間內(nèi)完成; 2 2確定性確定性 對于每種情況下所應(yīng)執(zhí)對于每種情況下所應(yīng)執(zhí)行的操作,在算法中都有確切的規(guī)定,行的操作,在算法中都有確切的規(guī)定,使算法的執(zhí)行者或閱讀者都能明確其使算法的執(zhí)行者或閱讀者都能明確其含義及如何執(zhí)行。并且在任何條件下,含義及

3、如何執(zhí)行。并且在任何條件下,算法都只需一條執(zhí)行途徑;算法都只需一條執(zhí)行途徑;3 3可行性可行性 算法中的一切操作都必需足算法中的一切操作都必需足夠根本,都可以經(jīng)過曾經(jīng)實現(xiàn)的根本操作夠根本,都可以經(jīng)過曾經(jīng)實現(xiàn)的根本操作運算有限次實現(xiàn)之;運算有限次實現(xiàn)之;4 4有輸入有輸入 作為算法加工對象的量值,作為算法加工對象的量值,通常表達為算法中的一組變量。有些輸入通常表達為算法中的一組變量。有些輸入量需求在算法執(zhí)行過程中輸入,而有的算量需求在算法執(zhí)行過程中輸入,而有的算法外表上可以沒有輸入,實踐上已被嵌入法外表上可以沒有輸入,實踐上已被嵌入算法之中;算法之中; 5有輸出 它是一組與“輸入與確定關(guān)系的量值

4、,是算法進展信息加工后得到的結(jié)果,這種確定關(guān)系即為算法的功能。二、算法設(shè)計的原那么二、算法設(shè)計的原那么設(shè)計算法時,通常應(yīng)思索到達以下目的:1正確性正確性2. 可讀性可讀性3強壯性強壯性4高效率與低存儲量需求高效率與低存儲量需求1 1正確性正確性 首先,算法該當滿足以特定的“規(guī)格闡明方式給出的需求。 其次,對算法能否“正確的了解可以有以下四個層次:a a程序中不含語法錯誤;程序中不含語法錯誤;b b程序?qū)τ趲捉M輸入數(shù)據(jù)可以得出程序?qū)τ趲捉M輸入數(shù)據(jù)可以得出滿足要求的結(jié)果;滿足要求的結(jié)果; c c程序?qū)τ诰倪x擇的、典型、苛刻且程序?qū)τ诰倪x擇的、典型、苛刻且?guī)в械箅y性的幾組輸入數(shù)據(jù)可以得出滿足帶有

5、刁難性的幾組輸入數(shù)據(jù)可以得出滿足要求的結(jié)果;要求的結(jié)果;通常以第 c 層意義的正確性作為衡量一個算法能否合格的規(guī)范。 d程序?qū)τ谝磺泻戏ǖ妮斎霐?shù)據(jù)都能得出滿足要求的結(jié)果;2. 可讀性可讀性 算法主要是為了人的閱讀與交流,其次才是為計算機執(zhí)行。因此算法應(yīng)該易于人的了解;另一方面,晦澀難讀的程序易于隱藏較多錯誤而難以調(diào)試;3強壯性強壯性 當輸入的數(shù)據(jù)非法時,算法該當恰當?shù)刈鞒龇从郴蜻M展相應(yīng)處置,而不是產(chǎn)生莫名奇妙的輸出結(jié)果。并且,處置出錯的方法不應(yīng)是中斷程序的執(zhí)行,而應(yīng)是前往一個表示錯誤或錯誤性質(zhì)的值,以便在更高的籠統(tǒng)層次上進展處置。4高效率與低存儲量需求高效率與低存儲量需求 通常,效率指的是算法

6、執(zhí)行時間;存儲量指的是算法執(zhí)行過程中所需的最大存儲空間。兩者都與問題的規(guī)模有關(guān)。三、算法效率的三、算法效率的度量度量通常有兩種衡量算法效率的方法: 事后統(tǒng)計法事后統(tǒng)計法事前分析估算法事前分析估算法缺陷:缺陷:1 1。必需執(zhí)行程序。必需執(zhí)行程序 2 2。其它要素掩蓋算法本質(zhì)。其它要素掩蓋算法本質(zhì)和算法執(zhí)行時間相關(guān)的要素:1 1算法選用的戰(zhàn)略算法選用的戰(zhàn)略2 2問題的規(guī)模問題的規(guī)模3 3編寫程序的言語編寫程序的言語4 4編譯程序產(chǎn)生的機器代碼的質(zhì)量編譯程序產(chǎn)生的機器代碼的質(zhì)量5 5計算機執(zhí)行指令的速度計算機執(zhí)行指令的速度 一個特定算法的“運轉(zhuǎn)任務(wù)量的大小,只依賴于問題的規(guī)模通常用整數(shù)量n表示,或者

7、說,它是問題規(guī)模的函數(shù)。 一個算法是由控制構(gòu)造順序、分支和循環(huán)三種和原操作指固有數(shù)據(jù)類型的操作構(gòu)成的,那么算法時間取決于兩者的綜合效果。為了便于比較同一問題的不同算法,通常的做法是,從算法中選取一種對于所研討的問題或算法類型來說是根本操作的原操作,以該根本操作反復執(zhí)行的次數(shù)作為算法的時間量度。 假設(shè),隨著問題規(guī)模 n 的增長,算法執(zhí)行時間的增長率和 f(n) 的增長率一樣,那么可記作:T (n) = O(f(n)稱稱T (n) T (n) 為算法的為算法的( (漸近漸近) )時間復雜度時間復雜度如何估算如何估算 算法的時間復雜度?算法的時間復雜度?算法算法 = = 控制構(gòu)造控制構(gòu)造 + + 原

8、操作原操作 固有數(shù)據(jù)類型的操作固有數(shù)據(jù)類型的操作算法的執(zhí)行時間算法的執(zhí)行時間 = =原操作原操作(i)(i)的執(zhí)行次數(shù)的執(zhí)行次數(shù)原操作原操作(i)(i)的執(zhí)行時間的執(zhí)行時間 算法的執(zhí)行時間算法的執(zhí)行時間 與與 原操作執(zhí)行次數(shù)之和原操作執(zhí)行次數(shù)之和 成正比成正比 從算法中選取一種對于所研討的問題來說是 根本操作 的原操作,以該根本操作 在算法中反復執(zhí)行的次數(shù) 作為算法運轉(zhuǎn)時間的衡量準那么。語句頻度是指的是該語句反復執(zhí)行的次數(shù)。例例一一兩兩個個矩矩陣陣相相乘乘void mult(int a, int b, int& c ) / 以二維數(shù)組存儲矩陣元素,以二維數(shù)組存儲矩陣元素,c 為為 a

9、和和 b 的乘積的乘積 for (i=1; i=n; +i) for (j=1; j=n; +j) ci,j = 0; for (k=1; k=n; +k) ci,j += ai,k*bk,j; /for /mult根本操作: 乘法操作時間復雜度: O(n3) 由于算法的時間復雜度思索的只是對于問題規(guī)模n的增長率,在難以準確計算根本操作執(zhí)行次數(shù)語句頻度的情況下,只需求求出它關(guān)于n的增長率或階即可。通常算法中根本操作反復執(zhí)行的次數(shù)隨問題的輸入數(shù)據(jù)集不同而不同,對這類算法的分析,其一是計算算法的平均時間復雜度,其二是計算最壞情況下的時間復雜度。 常用的時間復雜度有如下的關(guān)系:O(1)=O(log2n)=O(n)=O(nlog2n)=O(n2)=O(2n)四、算法的存儲空間需求四、算法的存儲空間需求算法的空間復雜度定義為: 表示隨著問題規(guī)模 n 的增大,算法運轉(zhuǎn)所需存儲量的增長率與 g(n) 的增長率一樣。S(n) = O(g(n)算法的存儲量包括算法的存儲量包括:1輸入數(shù)據(jù)所占空間2程序本身所占空間;3輔助變量所占空間。 假設(shè)輸入數(shù)據(jù)所占空間只取決與問題 本身,和算法無關(guān),那么只需求分析除 輸入

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論