算法是指解題方案的準確而完整的描述,是一系列解決問題的清晰指令,代表著用系統的方法描述解決問題的策略機制。它能夠對一定規範的輸入,在有限時間內獲得所要求的輸出。如果一個算法有缺陷或不適合某個問題,執行這個算法將無法解決該問題。算法中的指令描述的是一個計算過程,該過程從初始狀態和初始輸入(可能為空的)開始,經過一系列有限而清晰定義的狀態,最終產生輸出並終止於某一狀態。一個算法的優劣可以用空間複雜度與時間複雜度來衡量。
算法有以下五個基本特徵:
有窮性:算法必須能在執行有限個步驟之後終止。
確切性:算法的每一步驟必須有確切的定義。
輸入項:一個算法有0個或多個輸入,以刻畫運算對象的初始情況,所謂0個輸入是指算法本身定出了初始條件。
輸出項:一個算法有一個或多個輸出,以反映對輸入數據加工後的結果。沒有輸出的算法是毫無意義的。
可行性:算法中執行的任何計算步驟都是可以被分解為基本的可執行的操作步,即每個計算步都可以在有限時間內完成(也稱之為有效性)。