细数二十世纪最伟大的十大算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

细数二十世纪最伟大的十大算法

译者:July 二零一一年一月十日

------------------------------------

参考文献:

The Best of the 20th Century: Editors Name Top 10 Algorithms。

By Barry A. Cipra。地址:/faculty/rcli/TopTen/topten.pdf。

博主说明:

1、此20世纪的十大算法,除了快速排序算法,或者快速傅里叶变换算法,其它算法只要稍作了解即可。

2、此文非最新文章,只是本人对算法比较感兴趣,所以也做翻译,学习研究下。

===============================

发明十大算法的其中几位算法大师

一、1946 蒙特卡洛方法

[1946: John von Neumann, Stan Ulam, and Nick Metropolis, all at the Los Alamos Scientific Laboratory, cook up the Metropolis algorithm, also known as the Monte Carlo method.]

1946年,美国拉斯阿莫斯国家实验室的三位科学家John von Neumann,StanUlam和Nick Metropolis

共同发明,被称为蒙特卡洛方法。

它的具体定义是:

在广场上画一个边长一米的正方形,在正方形内部随意用粉笔画一个不规则的形状,

现在要计算这个不规则图形的面积,怎么计算列?

蒙特卡洛(Monte Carlo)方法告诉我们,均匀的向该正方形内撒N(N是一个很大的自然数)个黄豆,

随后数数有多少个黄豆在这个不规则几何形状内部,比如说有M个,

那么,这个奇怪形状的面积便近似于M/N,N越大,算出来的值便越精确。

在这里我们要假定豆子都在一个平面上,相互之间没有重叠。(撒黄豆只是一个比喻。)

蒙特卡洛方法可用于近似计算圆周率:

让计算机每次随机生成两个0到1之间的数,看这两个实数是否在单位圆内。

生成一系列随机点,统计单位圆内的点数与总点数,内接圆面积和正方形面积之比为PI:4,PI为圆周率。

(多谢网友七里河蠢才指出:S内接圆:S正=PI:4。具体,请看文下第99条评论。十六日修正),

当随机点取得越多(但即使取10的9次方个随机点时,其结果也仅在前4位与圆周率吻合)时,

其结果越接近于圆周率。

二、1947 单纯形法

[1947: George Dantzig, at the RAND Corporation, creates the simplex method for linear programming.]

1947年,兰德公司的,GrorgeDantzig,发明了单纯形方法。

单纯形法,此后成为了线性规划学科的重要基石。

所谓线性规划,简单的说,就是给定一组线性(所有变量都是一次幂)约束条件

(例如a1*x1+b1*x2+c1*x3>0),求一个给定的目标函数的极值。

这么说似乎也太太太抽象了,但在现实中能派上用场的例子可不罕见——比如对于一个公司而言,其能够投入生产的人力物力有限(―线性约束条件‖),而公司的目标是利润最大化(―目标函数取最大值‖),看,线性规划并不抽象吧!

线性规划作为运筹学(operation research)的一部分,成为管理科学领域的一种重要工具。而Dantzig提出的单纯形法便是求解类似线性规划问题的一个极其有效的方法。

三、1950 Krylov子空间迭代法

[1950: Magnus Hestenes, Eduard Stiefel, and Cornelius Lanczos, all from the Institute for Numerical Analysis at the National Bureau of Standards, initiate the development of Krylov subspace iteration methods.]

1950年:美国国家标准局数值分析研究所的,马格努斯Hestenes,爱德华施蒂费尔和

科尼利厄斯的Lanczos,发明了Krylov子空间迭代法。

Krylov子空间迭代法是用来求解形如Ax=b 的方程,A是一个n*n 的矩阵,当n充分大时,直接计算变得非常

困难,而Krylov方法则巧妙地将其变为Kxi+1=Kxi+b-Axi的迭代形式来求解。

这里的K(来源于作者俄国人Nikolai Krylov姓氏的首字母)是一个构造出来的接近于A的矩阵,

而迭代形式的算法的妙处在于,它将复杂问题化简为阶段性的易于计算的子步骤。

四、1951 矩阵计算的分解方法

[1951: Alston Householder of Oak Ridge National Laboratory formalizes the decompositional approach to matrix computations.]

1951年,阿尔斯通橡树岭国家实验室的Alston Householder提出,矩阵计算的分解方法。

这个算法证明了任何矩阵都可以分解为三角、对角、正交和其他特殊形式的矩阵,

该算法的意义使得开发灵活的矩阵计算软件包成为可能。

五、1957 优化的Fortran编译器

[1957: John Backus leads a team at IBM in developing the Fortran optimizing compiler.]

相关文档
最新文档