应用数学十大算法
在JCSE 2000年2月发表的论文中,Jack Dongarra and Francis Sullivan 挑选了”21世纪科学和工程实践和发展最具影响力的十大算法”,并展示了这些算法的文章,他们具有编纂许可.(Barry Cipra的SIAM新闻文章给出了不能访问原始论文的概述).这十大列表吸引了很多人的注意.
16年后,我虽然很想用不同的方式生成一个列表,看看与原来的top 10 有什么不同.我不按科学的方法,而是确定哪些算法在Princeton Companion to Applied Mathematics索引中拥有最多页面定位器.这是一个有缺陷的度量,原因是:首先,这本书重点是应用数学,所以一些包含在原始列表的算法可能被排除在外,虽然这本书扩展了范围,包含许多关于应用和其他领域接口主题的文章.第二,目录是有选择性的,并且这本书数不会包含所有应用数学.第三页面定位器的数量不一定是良好的重要性度量.然而,索引是由专业编纂索引的人准备的,因此他应该能客观反映书的内容.
编纂这样一个列表,定义算法的意图是什么的人都会面对一个问题.究竟应该怎么界定算法和技术?一个简单的例子,对有理数函数进行有理数分解是否构成一个算法?在编制下面列表中,我已经有失包容的一面.前十的列表是以页面定位器数量降序排列的.
- 牛顿法和拟牛顿法
- 矩阵分解(LU,Cholesky,QR)
- 奇异值分解,QR和QZ算法
- 蒙特卡罗算法
- 快速傅里叶变换
- Krylov子空间算法(共轭梯度,Lanczos, GMRES, minres)
- JPEG
- PageRank
- 单纯形法
- 卡尔曼滤波
注意JPEG(1992)和PageRank(1998)是最年轻的,但是其他算法都要追溯到1960s.
通过比较,2000年列表是按时间顺序(没有其他排序给出):
- 蒙特卡洛Metropolis算法
- 线性规划单纯形法
- Krylov子空间迭代法
- 分解方法用于矩阵计算
- Fortran优化编译器
- QR算法用于计算特征值
- Quicksort 算法用于排序
- 快速傅里叶变换
- 整数关系检测
- 快速多极方法
两个列表由7个相同的作品.不同的是:
在右栏中,Fortran语言索引在PCAM中会上班,但C,MATLAB等同样上榜.我以此为限其中包括语言和编译器;快速多方法差点上榜;快速排序和整数关系检测都有一个PCAM页面定位器。
有两个列表之间的一个显着的共识! Dongarra and Sullivan说,他们知道,“无论我们在最后提出什么,这将是有争议的”。他们的排名无疑刺激了一些争论,但我不认为它太过争议。这种比较表明, Dongarra and Sullivan做了很好的工作,已经经受住了时间的考验。
最后,我推荐读者阅读是谁发明的伟大的数值算法?,Nick Trefethen以历史的角度探讨算法,包括上面算法。