计算算法是计算机解决某一特定类型问题的有限运算序列(指令的有限集合),对任何一类问题来说,算法就是解决该类问题的方法和步骤。
定义
算法与
数据结构是计算机程序的两大基础,数据结构是为了研究数据运算而存在的;算法是为了实现数据运算,即实现数据的逻辑关系变化或者是在这个结构上得到一个新的信息而存在的。数据结构与算法的实质不仅表现在两者互为依存,还体现在提高计算机效率的作用上。
当代计算机可执行的算法类型是处理输入数据,产生一组输出数据。输出数据可能是一个问题的答案或解,一组顾客邮件表,一个修改的银行事物磁带,或者是一个法人的报告。我们称这样的问题为“计算”。
计算机解题一般可分解成若干操作步骤,通常把完成某一任务的操作步骤称为求解该问题,即算法是解决某一特定类型问题的有限运算序列(指令的有限集合),对任何一类问题来说,算法就是解决该类问题的方法和步骤。
特性
确定性
算法的确定性是指算法中的每一条规则、每一个操作步骤都应当是确定的,不允许存在多义性和模棱两可的解释。
有穷性
算法的有穷性是指任意一个算法必须在执行有限步骤后结束。也就是说,任何算法都必须在有限的时间内完成。如果一个算法要执行几十年才结束,该算法也就失去了它的实用价值。因此,有穷性还隐含了算法的执行时间应该合理的含义。
输入
在执行
算法过程中,从外界获得的信息就是输入。一个算法有0个、1个或多个输入。一个算法执行的结果总是与输入的初始数据有关,不同的输入将会产生不同的输出结果。当输入不够或输入错误时,会导致算法无法执行或执行错误。
输出
一个算法所得到的结果就是该算法的输出。一个算法必须有1个或多个输出,否则该算法就没有实际意义了。
可执行性
算法的每一步操作都应该是可执行的,例如当B=0是,A/B就无法执行,不符合可执行性的要求。
分类
数值计算算法
数值计算算法主要用于科学计算,其目的是为了求数值解。例如,求方程的根有二分法、迭代法和牛顿法;计算数值积分有梯形法、辛普森法和柯特斯法。这类算法的特点是只有少量的输入和输出,算术运算占主要地位,所用的数据结构比较简单。
非数值计算算法
非数值计算算法主要用于数据管理、实时控制以及人工智能等领域,其目的是对数据的处理。这类算法的特点是具有大量的输入和输出,逻辑判断占主导地位,算术运算居于相对次要的地位。算法的处理也从单纯的数值运算拓展到对数据、图形和字符信息的综合处理。一般来说,这种算法所使用的数据结构也比较复杂。