![cover image](https://wikiwandv2-19431.kxcdn.com/_next/image?url=https://upload.wikimedia.org/wikipedia/commons/thumb/1/15/LampFlowchart_ZhS.svg/langzh-hk-640px-LampFlowchart_ZhS.svg.png&w=640&q=50)
演算法
一系列的計算過程 / 維基百科,自由的 encyclopedia
演算法(英語:algorithm),在數學(算學)和電腦科學之中,指一個被定義好的、電腦可施行其指示的有限步驟或次序[1],常用於計算、數據處理和自動推理。演算法可以使用條件陳述式通過各種途徑轉移代碼執行(稱為自動決策),並推導出有效的推論(稱為自動推理),最終實現自動化。
![]() |
![](http://upload.wikimedia.org/wikipedia/commons/thumb/1/1a/LampFlowchart_ZhT.svg/320px-LampFlowchart_ZhT.svg.png)
相反,啟發式是一種解決問題的方法,可能沒有完全指定,也可能不能保證正確或最佳的結果,尤其是在沒有明確定義的正確或最佳結果的問題領域。[2]例如,社交媒體推薦系統依賴於啟發式,儘管在21世紀的流行媒體中被廣泛稱為演算法,但由於問題的性質,它無法提供正確的結果。
早在嘗試解決希爾伯特提出的判定問題時,演算法的不完整概念已經初步定型;在其後的正式化階段中人們嘗試去定義「有效可計算性(英語:Effective calculability)[3]」或者「有效方法(英語:Effective method)[4]」。這些嘗試包括庫爾特·哥德爾、雅克·埃爾布朗和斯蒂芬·科爾·克萊尼分別於1930年、1934年和1935年提出的遞歸函數,阿隆佐·邱奇於1936年提出的λ演算,1936年埃米爾·萊昂·珀斯特(英語:Emil Leon Post)的波斯特-圖靈機和艾倫·圖靈1937年提出的圖靈機。即使在當下,依然常有符合直覺的想法難以定義為形式化演算法的情況。[5]
演算法是有效方法(英語:Effective method),包含一系列定義清晰的指令[6],並可於有限的時間及空間內清楚的表述出來[7]。演算法中的指令描述的是一個計算,它執行(英語:Execution (computing))時從一個初始狀態和初始輸入(可能為空)開始,[8]經過一系列有限[9]而清晰定義的狀態最終產生輸出[10]並停止於一個終態。 一個狀態到另一個狀態的轉移不一定是確定的。 包括隨機化演算法在內的一些演算法,都包含了一些隨機輸入。[11][12]