演算法設計與分析

2021-10-25 22:09:59 字數 1979 閱讀 9957

2遞迴演算法

1.演算法是一組有窮的規則,它規定了解決某一特定型別問題的一系列計算方法。

2.頻率計數是指計算機執行程式中的某一條語句的執行次數。

3.多項式時間演算法是指可用多項式函式對某演算法進行計算時間限界的演算法。

4.指數時間演算法是指某演算法的計算時間只能使用指數函式限界的演算法法的基本概念

演算法的重要特性

確定性:演算法的每一種運算必須具有確切的定義,沒有二義性

能行性:每種運算在原理上可由人用筆和紙在有限的時間內完成

輸入:每個演算法有0個或多個輸入

輸出:每個演算法產生1個或多個輸出

有限性:執行有限步運算後停止執行

演算法的基本內容

1.設計演算法

2.表示演算法

3.確認演算法

4.分析演算法

5.測試程式

計算時間的漸進表示

漸進上界

漸進下界

漸進緊界

常用求和公式:

事前分析是指求出某個演算法的乙個時間限界函式(它是一些有關引數的函式) 

事後測試指收集計算機對於某個演算法的執行時間和占用空間的統計資料。

評價乙個演算法應從事前分析和事後測試這兩個階段進行

事前分析主要應從時間複雜度和空間複雜度這兩個維度進行分析;

事後測試主要應對所評價的演算法作時空效能分布圖。

遞迴演算法是一種自己呼叫自己或者間接呼叫自己的一種演算法

遞迴演算法包括直接遞迴函式和間接遞迴函式

將需要求解的問題轉化為性質相同的子問題

最終達到求解的目的,性質相同就是指解決子問題與解決原問題的方法是完全相同的。

遞迴演算法的設計

遞迴演算法求解的問題滿足以下條件:

例1 求階乘函式n!

輸入:n

輸出:n!

int factorial(int n)

遞迴方程

f(0) = 0

f(n) = f(n-1)+ 1

例2 計算整數的非負整數次冪

輸入:整數x和非負整數n

輸出:x的n次冪

演算法:當n=0時,將1作為函式的返回值返回,

否則先計算出n/2次冪,然後討論n的奇偶性

int power(int x,int n)

return y;

}遞迴方程

f(1)= 1

f(n)= f(n/2)+1

例3 基於遞迴演算法的插入排序

輸入:陣列a[ ] ,元素的個數n

輸出:非遞減排序的a[ ]

演算法:templatevoid insert_sort(type a[ ],int n)

>a))

a[k+1]=a;

}}遞迴方程:

f(0)=0

f(n)= f(n-1)+n-1

將遞迴演算法轉換為非遞迴演算法有兩種方法

一種是直接求值(迭代/迴圈),不需要回溯;

另一種是不能直接求值,需要回溯。

前者使用一些變數儲存中間結果,稱為直接轉換法;

後者使用棧儲存中間結果,稱為間接轉換法

演算法設計與分析

輸入輸出 確定性有窮性 np類問題是非確定性計算模型下的易驗證問題類。所有可以在多項式時間內求解的判定問題構成p類問題 1 二分搜尋技術 二分搜尋演算法的基本思路是對給定已排好序的n個元素a 0 n 1 在這n個元素中找出乙個特定元素x。運用分治的思想,將n個元素以n 2為中心對半分。if x a ...

演算法分析與設計

分析,此題可以用動態規劃來做。子問題為 max i max i 1 0 max i 1 nums i nums i max i 表示以nums i 結尾的子串的最大和,最後返回最大的那個即為所求,複雜度為o n class solution return max 另一種實現方法,更加簡潔,即從前往後...

演算法設計與分析

ylbtech miscellaneos 演算法設計與分析 a,返回頂部1,演算法設計與分析 是2009年國防工業出版社出版的圖書,作者是張德富。書主要取材於演算法設計與分析領域的經典內容,並介紹了演算法設計的發展趨勢。內容主要包括非常經典的演算法設計技術,例如遞迴與分治 動態規劃 貪心 回溯 分支...