什么是算法
算法很难有一个明确的定义,《算法导论》中第一章描述到:算法是任何良定义的计算过程。这个定义其实相当感性,但也可以理解关于算法定义的模糊性,因为算法本身就是难以定义的。
值得一提的是图灵对算法做出了一个相当严格,但是却同时也模糊的定义,图灵将算法定义为:一切可以使用完备图灵机执行的计算过程,乍一看这是个相当严谨的定义,但是问题是,完备图灵机同样难以定义,但是从可计算理论的角度来讲,图灵对于算法的定义仍然是最严谨的定义之一。
因为图灵还说过,给一个人一张纸一支笔,和一个明确的计算规则,这个人就是一个完备图灵机,我们也可以认为,算法就是一切人可以进行的计算(以及计算过程)。再从这里延申,我们可以认为,算法就是智慧的载体。
生活中的算法
算法早在计算机诞生之前很早很早就出现了,严格来讲,算法和智力是同时诞生的 — 因为算法就是智力的载体。由于智力是用来解决问题的必要手段,所以广义的算法即可以认为是解决问题步骤的描述。
举个例子,将一条长长的卫生纸折叠到一起,有两种常见的算法:1) 每次折叠一格. 2) 每次都进行对折. 在不考虑纸张的折叠次数极限,并假设无论纸张多长,一次对折都花费相同时间的情况下,后者的折叠时间随着纸张的长度呈对数增长,而第一个算法是线性增长的。
数学中的算法
虽然从广