算法(Algorithm)是指解題方案的準(zhǔn)確而完整的描述列敲,是一系列解決問題的清晰指令母怜,算法代表著用系統(tǒng)的方法描述解決問題的策略機(jī)制。也就是說善榛,能夠?qū)σ欢ㄒ?guī)范的輸入辩蛋,在有限時(shí)間內(nèi)獲得所要求的輸出。如果一個(gè)算法有缺陷移盆,或不適合于某個(gè)問題悼院,執(zhí)行這個(gè)算法將不會(huì)解決這個(gè)問題。不同的算法可能用不同的時(shí)間咒循、空間或效率來完成同樣的任務(wù)据途。一個(gè)算法的優(yōu)劣可以用空間復(fù)雜度與時(shí)間復(fù)雜度來衡量绞愚。
算法中的指令描述的是一個(gè)計(jì)算,當(dāng)其運(yùn)行時(shí)能從一個(gè)初始狀態(tài)和(可能為空的)初始輸入開始颖医,經(jīng)過一系列有限而清晰定義的狀態(tài)位衩,最終產(chǎn)生輸出并停止于一個(gè)終態(tài)。一個(gè)狀態(tài)到另一個(gè)狀態(tài)的轉(zhuǎn)移不一定是確定的熔萧。隨機(jī)化算法在內(nèi)的一些算法糖驴,包含了一些隨機(jī)輸入。
形式化算法的概念部分源自嘗試解決希爾伯特提出的判定問題佛致,并在其后嘗試定義有效計(jì)算性或者有效方法中成形贮缕。這些嘗試包括庫爾特·哥德爾、Jacques Herbrand和斯蒂芬·科爾·克萊尼分別于1930年俺榆、1934年和1935年提出的遞歸函數(shù)感昼,阿隆佐·邱奇于1936年提出的λ演算,1936年Emil Leon Post的Formulation 1和艾倫·圖靈1937年提出的圖靈機(jī)罐脊。