算法設計與分析(一)時間復雜度、限界函數、基本數據結構、遞推


算法的定義和特性

算法的五個特性確定性,能行性,輸入,輸出,有窮性

確定(確切)性(Definiteness):算法每一步語義確切,不能有二義性

 

能行(可行)性(Effectiveness):算法中的運算原理上都能由人在有限時間內完成

 

輸入:一個算法有0個或多個輸入,以刻畫運算對象的初始情況,所謂0個輸入是指算法本身定出了初始條件;

輸入的集合叫定義域

 

輸出:一個算法產生一個或多個輸出,輸出是與輸入有關的量

 

有窮性(Finiteness):一個算法總是在執行有窮步后終止

  計算過程:只滿足確定性、能行性、輸入、輸出而不一定能終止的一組規則如操作系統

時間復雜度

算法時間復雜度定義:
  在進行算法分析時,語句總的執行次數T(n)是關於問題規模n的函數,進而分析T(n)隨n的變化情況並確定T(n)的數量級。算法的時間復雜度,也就是算法的時間量度,記作:T(n)=O(f(n))。它表示隨問題規模n的增大,算法執行時間的增長率和f(n)的增長率相同,稱作算法的漸進時間復雜度,簡稱時間復雜度。其中f(n)是問題規模n的某個函數。

 

1)上界函數O(g(n))

如果存在兩個正常數c和n0,當n≥n0時,有f(n)≤cg(n),則記做f(n) = O(g(n)),稱g(n)是f(n)的一個上界 

注: f(n)的階不高於g(n)

 

2)下界函數Ω(g(n))

c和n0,使得當n≥n0時,有f(n)≥c g(n),則記做f(n) = Ω (g(n)),稱為Ω記號。

 注: f(n)的階不低於g(n)

 

3)平均情況限界函數θ(g(n))

當n≥n0時,有c1 g(n)≤f(n)≤c2 g(n),則記做f(n) = θ(g(n))。 注:此時f(n)和g(n)同階

 

判斷時間復雜度是否為准確值相關定理

如果存在正常數n0, 使得當n≥n0時有f(n)>0, g(n)>0

並且  

  則f(n)=O(g(n))

如果存在正常數n0, 使得當n≥n0時有f(n)>0, g(n)>0

並且  

 則f(n)=θ(g(n))

遞歸

在算法設計的初期階段使用遞歸, 一旦所設計的遞歸算法被證明為正確且確信是一個好算法時,就可以消去遞歸, 把該算法翻譯成與之等價的、只使用迭代的算法。

遞歸就是F(N)=F(N-1)自身調用自身,迭代就是for(i=0,i<n,i++) a=a*i;

https://blog.csdn.net/laoyang360/article/details/7855860

https://www.jianshu.com/p/32bcc45efd32

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM