《世纪最伟大的十大算法.pptx》由会员分享,可在线阅读,更多相关《世纪最伟大的十大算法.pptx(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1课外讲座课外讲座第1页/共27页 参考论文:The Best of the 20th Century: Editors Name Top 10 Algorithms。By Barry A. Cipra2第2页/共27页发明十大算法的其中几位算法大师发明十大算法的其中几位算法大师3第3页/共27页一、一、1946 蒙特卡洛方法蒙特卡洛方法 1946: John von Neumann, Stan Ulam, and Nick Metropolis, all at the Los Alamos Scientific Laboratory, cook up the Metropolis algor
2、ithm, also known as the Monte Carlo method. 1946年,美国拉斯阿莫斯国家实验室的三位科学家John von Neumann,Stan Ulam 和 Nick Metropolis共同发明,被称为蒙特卡洛方法。4第4页/共27页 它的具体定义是:在广场上画一个边长一米的正方形,在正方形内部随意用粉笔画一个不规则的形状,现在要计算这个不规则图形的面积,怎么计算列? 蒙特卡洛(Monte Carlo)方法告诉我们,均匀的向该正方形内撒N(N 是一个很大的自然数)个黄豆,随后数数有多少个黄豆在这个不规则几何形状内部,比如说有M个,那么,这个奇怪形状的面积便
3、近似于M/N,N越大,算出来的值便越精确。5第5页/共27页 在这里我们要假定豆子都在一个平面上,相互之间没有重叠。 蒙特卡洛方法可用于近似计算圆周率:让计算机每次随机生成两个0到1之间的数,看这两个实数是否在单位圆内。 生成一系列随机点,统计单位圆内的点数与总点数,(圆面积和正方形面积之比为PI:1,PI为圆周率),当随机点取得越多(但即使取10的9次方个随机点时,其结果也仅在前4位与圆周率吻合)时,其结果越接近于圆周率。6第6页/共27页二、二、1947 单纯形法单纯形法 1947: George Dantzig, at the RAND Corporation, creates the
4、simplex method for linear programming. 1947年,兰德公司的,Grorge Dantzig,发明了单纯形方法。单纯形法,此后成为了线性规划学科的重要基石。7第7页/共27页 所谓线性规划,简单的说,就是给定一组线性(所有变量都是一次幂)约束条件(例如a1*x1+b1*x2+c1*x30),求一个给定的目标函数的极值。 这么说似乎也太太太抽象了,但在现实中能派上用场的例子可不罕见比如对于一个公司而言,其能够投入生产的人力物力有限(“线性约束条件”),而公司的目标是利润最大化(“目标函数取最大值”),线性规划并不抽象吧!8第8页/共27页 线性规划作为运筹学
5、(operation research)的一部分,成为管理科学领域的一种重要工具。而Dantzig提出的单纯形法便是求解类似线性规划问题的一个极其有效的方法。9第9页/共27页三、三、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 subs
6、pace iteration methods. 1950年:美国国家标准局数值分析研究所的,马格努斯Hestenes,爱德华施蒂费尔和科尼利厄斯的Lanczos,发明了Krylov子空间迭代法。10第10页/共27页 Krylov子空间迭代法是用来求解形如Ax=b 的方程,A是一个n*n 的矩阵,当n充分大时,直接计算变得非常困难,而Krylov方法则巧妙地将其变为Kxi+1=Kxi+b-Axi的迭代形式来求解。 这里的K(来源于作者俄国人Nikolai Krylov姓氏的首字母)是一个构造出来的接近于A的矩阵,而迭代形式的算法的妙处在于,它将复杂问题化简为阶段性的易于计算的子步骤。11第11
7、页/共27页四、四、1951 矩阵计算的分解方法矩阵计算的分解方法 1951: Alston Householder of Oak Ridge National Laboratory formalizes the decompositional approach to matrix computations. 1951年,阿尔斯通橡树岭国家实验室的Alston Householder提出,矩阵计算的分解方法。12第12页/共27页 这个算法证明了任何矩阵都可以分解为三角、对角、正交和其他特殊形式的矩阵,该算法的意义使得开发灵活的矩阵计算软件包成为可能。13第13页/共27页五、五、1957 优
8、化的优化的Fortran编译器编译器 1957: John Backus leads a team at IBM in developing the Fortran optimizing compiler. 1957年:约翰巴库斯领导开发的IBM的团队,创造了Fortran优化编译器。14第14页/共27页 Fortran,亦译为福传,是由Formula Translation两个字所组合而成,意思是“公式翻译”。它是世界上第一个被正式采用并流传至今的高级编程语言。这个语言现在,已经发展到了,Fortran 2008,并为人们所熟知。15第15页/共27页六、六、1959-61 计算矩阵特征值
9、的计算矩阵特征值的QR算法算法 195961: J.G.F. Francis of Ferranti Ltd, London, finds a stable method for computing eigenvalues, known as the QR algorithm. 1959-61:伦敦费伦蒂有限公司的J.G.F. Francis,找到了一种稳定的特征值的计算方法,这就是著名的QR算法。16第16页/共27页 这也是一个和线性代数有关的算法,学过线性代数的应该记得“矩阵的特征值”,计算特征值是矩阵计算的最核心内容之一,传统的求解方案涉及到高次方程求根,当问题规模大的时候十分困难。
10、QR算法把矩阵分解成一个正交矩阵与一个上三角矩阵的积,和前面提到的Krylov 方法类似,这又是一个迭代算法,它把复杂的高次方程求根问题化简为阶段性的易于计算的子步骤,使得用计算机求解大规模矩阵特征值成为可能。 这个算法的作者是来自英国伦敦的J.G.F. Francis。17第17页/共27页七、七、1962 快速排序算法快速排序算法 1962: Tony Hoare of Elliott Brothers, Ltd., London, presents Quicksort.1962年:托尼埃利奥特兄弟有限公司,伦敦,霍尔提出了快速排序。 终于看到了可能是你第一个比较熟悉的算法。快速排序算法作
11、为排序算法中的经典算法,它被应用的影子随处可见。18第18页/共27页 快速排序算法最早由Tony Hoare爵士设计,它的基本思想是将待排序列分为两半,左边的一半总是“小的”,右边的一半总是“大的”,这一过程不断递归持续下去,直到整个序列有序。说起这位Tony Hoare爵士,快速排序算法其实只是他不经意间的小小发现而已,他对于计算机贡献主要包括形式化方法理论,以及ALGOL60 编程语言的发明等,他也因这些成就获得1980 年图灵奖。 快速排序的平均时间复杂度仅仅为O(Nlog(N),相比于普通选择排序和冒泡排序等而言,实在是历史性的创举。19第19页/共27页八、八、1965 快速傅立叶
12、变换快速傅立叶变换 1965: James Cooley of the IBM T.J. Watson Research Center and John Tukey of PrincetonUniversity and AT&T Bell Laboratories unveil the fast Fourier transform. 1965年:IBM 华生研究院的James Cooley,和普林斯顿大学的John Tukey,ATT贝尔实验室共同推出了快速傅立叶变换。20第20页/共27页 快速傅立叶算法是离散傅立叶算法(这可是数字信号处理的基石)的一种快速算法,其时间复杂度仅为O(Nlog
13、(N); 比时间效率更为重要的是,快速傅立叶算法非常容易用硬件实现,因此它在电子技术领域得到极其广泛的应用。21第21页/共27页九、九、1977 整数关系探测算法整数关系探测算法 1977: Helaman Ferguson and Rodney Forcade of Brigham Young University advance an integer relation detection algorithm.1977年:Helaman Ferguson和 伯明翰大学的Rodney Forcade,提出了Forcade检测算法的整数关系。22第22页/共27页 整数关系探测是个古老的问题,
14、其历史甚至可以追溯到欧几里德的时代。具体的说:给定组实数X1,X2,.,Xn,是否存在不全为零的整数a1,a2,.an,使得:a1 x 1 +a2 x2 + . . . + an xn 0?这一年BrighamYoung大学的Helaman Ferguson 和Rodney Forcade解决了这一问题。该算法应用于“简化量子场论中的Feynman图的计算”。23第23页/共27页十、十、1987 快速多极算法快速多极算法 1987: Leslie Greengard and Vladimir Rokhlin of Yale University invent the fast multipole algorithm. 1987年:莱斯利的Greengard,和耶鲁大学的Rokhlin发明了快速多极算法。 此快速多极算法用来计算“经由引力或静电力相互作用的N 个粒子运动的精确计算例如银河系中的星体,或者蛋白质中的原子间的相互作用”。24第24页/共27页 第十一、十二、十三 在座的同学们,也许将来有优秀的算法以你们名字而命名,并为人类服务 Just do it and enjoy this game.25第25页/共27页2626第26页/共27页27感谢您的观看。第27页/共27页