1. 程式人生 > >算法簡介

算法簡介

指令 條件 定義 ref 形式 機制 將不 解決問題 clas

定義

算法(Algorithm)是指解題方案的準確而完整的描述,是一系列解決問題的清晰指令,算法代表著用系統的方法描述解決問題的策略機制。

也就是說,能夠對一定規範的輸入,在有限時間內獲得所要求的輸出。如果一個算法有缺陷,或不適合於某個問題,執行這個算法將不會解決這個問題。不同的算法可能用不同的時間、空間或效率來完成同樣的任務。一個算法的優劣可以用空間復雜度時間復雜度來衡量。

特征

一個算法應該具有以下五個重要的特征:

  • 有窮性(Finiteness):算法的有窮性是指算法必須能在執行有限個步驟之後終止;
  • 確切性(Definiteness):算法的每一步驟必須有確切的定義;
  • 輸入項(Input):一個算法有0個或多個輸入,以刻畫運算對象的初始情況,所謂0個輸入是指算法本身定出了初始條件;
  • 輸出項(Output):一個算法有一個或多個輸出,以反映對輸入數據加工後的結果。沒有輸出的算法是毫無意義的;
  • 可行性(Effectiveness):算法中執行的任何計算步驟都是可以被分解為基本的可執行的操作步,即每個計算步都可以在有限時間內完成(也稱之為有效性)。

要素

一,數據對象的運算和操作:計算機可以執行的基本操作是以指令的形式描述的。一個計算機系統能執行的所有指令的集合,成為該計算機系統的指令系統。一個計算機的基本運算和操作有如下四類:

  1. 算術運算:加減乘除等運算
  2. 邏輯運算:或、且、非等運算
  3. 關系運算:大於、小於、等於、不等於等運算
  4. 數據傳輸:輸入、輸出、賦值等運算
二,算法的控制結構:一個算法的功能結構不僅取決於所選用的操作,而且還與各操作之間的執行順序有關。

評定

同一問題可用不同算法解決,而一個算法的質量優劣將影響到算法乃至程序的效率。算法分析的目的在於選擇合適算法和改進算法。一個算法的評價主要從時間復雜度和空間復雜度來考慮。
  • 時間復雜度:算法的時間復雜度是指執行算法所需要的計算工作量。一般來說,計算機算法是問題規模n 的函數f(n),算法的時間復雜度也因此記做T(n)=Ο(f(n))因此,問題的規模n 越大,算法執行的時間的增長率與f(n) 的增長率正相關,稱作漸進時間復雜度(Asymptotic Time Complexity)。

  • 空間復雜度:算法的空間復雜度是指算法需要消耗的內存空間。其計算和表示方法與時間復雜度類似,一般都用復雜度的漸近性來表示。同時間復雜度相比,空間復雜度的分析要簡單得多。
  • 正確性:算法的正確性是評價一個算法優劣的最重要的標準。
  • 可讀性:算法的可讀性是指一個算法可供人們閱讀的容易程度。
  • 健壯性:健壯性是指一個算法對不合理數據輸入的反應能力和處理能力,也稱為容錯性。

方法

  • 遞推
  • 遞歸
  • 窮舉
  • 貪心
  • 分治
  • 動態規劃
  • 叠代
  • 回溯
  • ……

算法簡介