跳到主要内容

什么是算法?

算法(英语:algorithm),在数学(算学)和计算机科学之中,指一个被定义好的、计算机可施行其指示的有限步骤或次序,常用于计算、数据处理和自动推理。算法可以使用条件语句通过各种途径转移代码执行(称为自动决策),并推导出有效的推论(称为自动推理),最终实现自动化。

算法的定义

非正式地说,算法 (algorithm) 就是任何良定义的计算过程,该过程取某个值或值的集合作为输入并产生某个值或值的集合作为输出。这样算法就是把输入转换成输出的计算步骤的一个序列。

下面是清华大学出版社的《数据结构》中关于算法的定义。

算法(Algorithm)
算法是对特定问题求解步骤的一种描述,它是指令的有限序列。其中每一条指令表示一个或多个操作。

维基百科中的定义感觉更清晰一些,如下

算法--《维基百科》
算法包含一系列定义清晰的指令,并可于有限的时间及空间内清楚的表述出来。算法中的指令描述的是一个计算,它执行时从一个初始状态和初始输入(可能为空)开始,经过一系列有限而清晰定义的状态最终产生输出并停止于一个终态。

算法的特征

算法还具有下列 5 个重要特性。

  • 有穷性: 一个算法必须总是(合法的输入值)在执行有穷步之后结束,且每一步都可在有穷时间内完成。
  • 确定性: 每一条指令必须有确切的含义,不能产生二义性。在任何条件下算法只有唯一的一条执行路径,即对于相同的输入只能得出相同的输出。
  • 可行性: 算法中描述的操作都可以通过已经实现的基本运算执行有限次来实现。
  • **输入:**一个算法有 0 个或多个的输入入
  • 输出: 一个算法有一个或多个的输出

算法可以没有参数。

算法设计的要求

  • 正确性: (correctness)算法应当满足具体问题的需求(正确反映需求)
    • a. 程序不含语法错误
    • b. 程序对于几组输入数据能够得出满足规格说明要求的结果
    • c. 程序对于精心选择的类型,苛刻带有刁难的几组输入数据能够得出满足规格说明要求的结果。
    • d. 程序对于一切合法的输入数据都能产生满足规格说明要求的结果。
  • 可读性:(readability)算法主要是为了人的阅读与交流,其次才是机器执行。
  • 健壮性:(robustness)当输入数据非法时,算法也能适当地做出反应或进行处理,而不会产生莫名其妙的输入结果。。
  • 效率与低存储量需求: 效率指的是算法执行的时间,执行时间短的算法效率高。存储量指的是算法执行过程中所需的最大存储空间。

参考资料

  • Thomas H. Carmen;Charles E. Leiserson 等. 《算法导论(原书第三版)》. 机械工业出版社. 2013: P17-P20. ISBN 978-7-111-40701-0
  • 严蔚敏,李冬梅,吴伟民. 《数据结构(C语言版 第2版)》. 清华大学出版社. 2015: P10-P13
  • 维基百科. 算法