上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.3 算法与程序
算法(Algorithm)是计算机问题求解的核心和关键。虽然人们对“算法”一词非常熟悉,可到目前为止,对于“算法”尚没有统一而精确的定义。有人说:算法就是一组有穷的规则,它们规定了解决某一特定问题的一系列运算。Thomas H. Cormen等人在Introduction to Algorithms一书中将算法描述为:算法是任何定义好了的计算程式,它取某些值或值的集合作为输入,并产生某些值或值的集合作为输出。因此,算法是将输入转化为输出的一系列计算步骤。概括起来,算法有以下5个特性:
① 确定性。算法的每种运算(包括判断)必须有确切的定义,即每种运算应该执行何种动作必须是清楚的、无二义性的。
② 可实现性。算法中有待实现的运算都是相当基本的,每种运算至少在原理上能通过人工用纸和笔在有限的时间内完成。
③ 具有数据输入。一个算法有零个或多个数据输入,它们是在算法开始之前对算法最初赋予的量,这些输入取自特定的对象集合。
④ 具有数据输出。一个算法产生一个或多个输出,它们是同输入有某种特定关系的量。
⑤ 有穷性。一个算法必须在执行有穷步之后终止。
程序(Program)是算法用某种程序设计语言的实现。程序可以不满足算法的第5个特性。例如,操作系统是一个无限循环执行的程序,因而不是一个算法。当然,如果把操作系统按照任务分解成一些独立的问题,每个问题则由操作系统中的一个子程序通过特定的算法来实现。