定量算法

算法(algorithm)广义来讲就是定义好的计算过程,接收输入的数据,产生输出的数据。Knuth将算法的特征总结为(1)确定性,步骤明确结果可期;(2)有穷性,存在结束条件;(3)可行性,过程走得通;(4)有输入和输出。

算法原本是各行各业根据本领域的问题想出来的定量分析过程,因为计算机变成个行业,算法似乎成了程序员们的天下。其实对于各行业的专家对自己行业的算法早已烂熟,只是不能变成代码。比如动态规划、线性规划等是运筹学的研究结果,但也早已成为算法领域的常规设计。程序员们用自己的行话抽象地讲述其他领域讨论了多年的问题,将这些算法根据程序语言的特点变成代码,并解决程序语言的局限造成的问题。

对于以软件程序为最终形态的算法而言,其中包括算法的设计模式、展示形式和实现方法等三方面内容。设计模式(design pattern)即线性规划、搜索枚举、贪婪法、分治法等。展示形式如伪代码、流程图、控制表等。实现方法包括顺序执行、并行执行、递归方法、迭代方法,等等。对于程序而言,算法只是其中一个环节,另一个环节是数据结构,即根据算法需要设计的输入数据存储形式,目的是让算法更简单、执行效率更高。现在流行的大数据面临的数据清洗问题其实属于数据结构的范畴。

程序员对算法的焦点是时间复杂度O,即程序执行的效率。

优化算法

线性规划

线性优化模型,也称为线性规划(linear programming)模型,是实践应用最广泛的的运筹学模型。

自然语言分析