算法分析複習筆記(一):書籍《計算機算法基礎》餘祥宣版

算法就是一組有窮的規則,它規定了解決某一特定類型問題的一系列運算。

算法是一系列解決問題的明確指令,也就是說,對於符合一定規範的輸入,能夠在有限時間內獲得要求的輸出。

算法的基本特性:

  1. 有窮性:必須在有限步驟之後終止
  2. 確定性:每個步驟必須精確定義,無歧義
  3. 輸入:0個或多個輸入(輸入是從特定的對象集合中取出)
  4. 輸出:一個或多個輸出
  5. 可行性:它的所有運算都是基本的運算,理論上可用紙和筆在有限時間內精確完成

算法學習的基本內容

  1. 設計算法:基本設計策略
  2. 表示算法:用語言表示出來
  3. 確認算法:合法輸入後能夠輸出正確答案
  4. 分析算法:佔用CPU的時間和佔用存儲器的空間
  5. 測試程序:調試

爲什麼分析算法?

       可以知道該算法的好壞、促進設計出更好算法。

運行時間的度量單位:

  1. 找出算法中最重要的操作(對總運行時間貢獻最大的操作)--基本操作
  2. 然後計算在該算法中基本操作運行的次數

計算時間的漸進表示

       n:問題的規模   f(n):算法的計算時間    g(n):形式簡單的函數

       以下三種符號表示g(n)對f(n)的漸進:

  1. O:如果存在兩個正常數c和n0,對於所有的n≥ n0,有|f(n)|≤ c| g(n) |,則記做f(n)=O(g(n))--->g(n)是f(n)的一個上界函數
  2. Ω:如果存在兩個正常數c和n0,對於所有的n≥ n0,有|f(n)|≥ c | g(n) |,則記做f(n) =Ω(g(n)).
  3. :如果存在正常數c1, c2和n0,對於所有的n≥n0,有c1 |g(n)|≤|f(n)|≤c2 |g(n)|,則記做f(n)= (g(n)).

以上三個符號具有以下性質:

  1. 傳遞性:比如:f (n)= O(g(n)),g(n)=O(h(n)) Þ f (n)=O(h(n))
  2. 反身性:比如:f(n)=O(f(n))
  3. 對稱性:f(n)= (g(n))   <=>   g(n)= (f(n))   只有這一條
  4. 互對稱性:f(n)=O(g(n))   <=>   g(n)=Ω(f(n))  只有這一條

                 

                 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章