求解問題類的、機械的、統一的方法,它由有限多個步驟組成,對於問題類中的每個給定的具體問題,機械地執行這些步驟就可以得到問題的解答。演算法的這種特性,使得計算不僅可以由人,而且可以由電腦來完成。用電腦解決問題的過程可以分成三個階段:分析問題、設計演算法和實現演算法。

  中國古代的籌算口決與珠算口決及其執行規則就是演算法的雛形,這裏,所解決的問題類是算術運算。古希臘數學傢歐幾裏得在西元前3世紀就提出瞭一個演算法,來尋求兩個正整數的最最大公約數,這就是有名的歐幾裡得算法,亦稱輾轉相除法。中國早已有“算術“、“算法”等詞匯,但是它們的含義是指當時的全部數學知識和計算技能,與現代算法的含義不盡相同。英文algorithm(算法)一詞也經歷瞭一個演變過程,最初的拼法為algorism或algoritmi,原意為用阿拉伯數字進行計算的過程。這個詞源於公元9世紀波斯數字傢阿爾·花拉子米的名字的最後一部分。

  在古代,計算通常是指數值計算。現代計算已經遠遠地突破瞭數值計算的范圍,包括大量的非數值計算,例如檢索、表格處理、判斷、決策、形式邏輯演繹等。

  在20世紀以前,人們普遍地認為,所有的問題類都是有算法的。20世紀初,數字傢們發現有的問題類是不存在算法的,遂開始進行能行性研究。在這一研究中,現代算法的概念逐步明確起來。30年代,數字傢們提出瞭遞歸函數、圖靈機等計算模型,並提出瞭丘奇-圖靈論題(見可計算性理論),這才有可能把算法概念形式化。按照丘奇-圖靈論題,任意一個算法都可以用一個圖靈機來實現,反之,任意一個圖靈機都表示一個算法。

  按照上述理解,算法是由有限多個步驟組成的,它有下述兩個基本特征:每個步驟都明確地規定要執行何種操作;每個步驟都可以被人或機器在有限的時間內完成。人們對於算法還有另一種不同的理解,它要求算法除瞭上述兩個基本特征外,還要具有第三個基本特征:雖然有些步驟可能被反復執行多次,但是在執行有限多次之後,就一定能夠得到問題的解答。也就是說,一個處處停機(即對任意輸入都停機)的圖靈機才表示一個算法,而每個算法都可以被一個處處停機的圖靈機來實現。