十大算法

原创 2011年01月12日 13:44:00

看到一篇文章:“细数二十世纪最伟大的 十大算法

http://blog.csdn.net/v_JULY_v/archive/2011/01/10/6127953.aspx

 

一、1946 蒙特卡洛方法

它的具体定义是:
在广场上画一个边长一米的正方形,在正方形内部随意用粉笔画一个不规则的形状,
现在要计算这个不规则图形的面积,怎么计算列?
蒙特卡洛(Monte Carlo)方法告诉我们,均匀的向该正方形内撒N(N 是一个很大的自然数)个黄豆,
随后数数有多少个黄豆在这个不规则几何形状内部,比如说有M个,
那么,这个奇怪形状的面积便近似于M/N,N越大,算出来的值便越精确。
在这里我们要假定豆子都在一个平面上,相互之间没有重叠。

蒙特卡洛方法可用于近似计算圆周率:让计算机每次随机生成两个0到1之间的数,看这两个实数是否在单位

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

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

 

类似割圆??

 

二、1947 单纯形法

1947年,兰德公司的,Grorge Dantzig,发明了单纯形方法。
单纯形法,此后成为了线性规划学科的重要基石。
所谓线性规划,简单的说,就是给定一组线性(所有变量都是一次幂)约束条件
(例如a1*x1+b1*x2+c1*x3>0),求一个给定的目标函数的极值。

这么说似乎也太太太抽象了,但在现实中能派上用场的例子可不罕见——比如对于一个公司而言,其能够投

入生产的人力物力有限(“线性约束条件”),而公司的目标是利润最大化(“目标函数取最大值”),看

,线性规划并不抽象吧!

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

 

三、1950 Krylov子空间迭代法

1950年:美国国家标准局数值分析研究所的,马格努斯Hestenes,爱德华施蒂费尔和
科尼利厄斯的Lanczos,发明了Krylov子空间迭代法。

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

困难,而Krylov方法则巧妙地将其变为Kxi+1=Kxi+b-Axi的迭代形式来求解。
这里的K(来源于作者俄国人Nikolai Krylov姓氏的首字母)是一个构造出来的接近于A的矩阵,
而迭代形式的算法的妙处在于,它将复杂问题化简为阶段性的易于计算的子步骤。

 

Kxi+1=Kxi+b-Axi?

 

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

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

这个算法证明了任何矩阵都可以分解为三角、对角、正交和其他特殊形式的矩阵,
该算法的意义使得开发灵活的矩阵计算软件包成为可能。

 

线性代数似乎没有讲到这个问题。

 

 

五、1957 优化的Fortran编译器
[1957: John Backus leads a team at IBM in developing the Fortran optimizing compiler .]

1957年:约翰巴库斯领导开发的IBM的团队,创造了Fortran优化编译器。

Fortran,亦译为福传,是由Formula Translation两个字所组合而成,意思是“公式翻译”。
它是世界上第一个被正式采用并流传至今的高级编程语言。
这个语言现在,已经发展到了,Fortran 2008,并为人们所熟知。

 

我懂C++,fortain不懂。

 

六、1959-61 计算矩阵特征值的QR算法
[1959–61: 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算法。

这也是一个和线性代数有关的算法,学过线性代数的应该记得“矩阵的特征值”,计算特征值是矩阵计算的

最核心内容之一,传统的求解方案涉及到高次方程求根,当问题规模大的时候十分困难。

QR算法把矩阵分解成一个正交矩阵(希望读此文的你,知道什么是正交矩阵。:D。)与一个上三角矩阵的积,

和前面提到的Krylov 方法类似,这又是一个迭代算法,它把复杂的高次方程求根问题化简为阶段性的易于

计算的子步骤,使得用计算机求解大规模矩阵特征值成为可能。
这个算法的作者是来自英国伦敦的J.G.F. Francis。

 

矩阵还真是重要。


七、1962 快速排序算法

1962年:伦敦的,托尼埃利奥特兄弟有限公司,霍尔提出了快速排序。

哈哈,恭喜你,终于看到了可能是你第一个比较熟悉的算法~。
快速排序算法作为排序算法中的经典算法,它被应用的影子随处可见。

快速排序算法最早由Tony Hoare爵士设计,它的基本思想是将待排序列分为两半,
左边的一半总是“小的”,右边的一半总是“大的”,这一过程不断递归持续下去,直到整个序列有序。
说起这位Tony Hoare爵士,快速排序算法其实只是他不经意间的小小发现而已,他对于计算机贡献主要包括

形式化方法理论,以及ALGOL60 编程语言的发明等,他也因这些成就获得1980 年图灵奖。

 

我知道。


八、1965 快速傅立叶变换
[1965: James Cooley of the IBM T.J. Watson Research Center and John Tukey of Princeton
University and AT&T Bell Laboratories unveil the fast Fourier transform
.]

1965年:IBM 华生研究院的James Cooley,和普林斯顿大学的John Tukey,
AT&T贝尔实验室共同推出了快速傅立叶变换。

快速傅立叶算法是离散傅立叶算法(这可是数字信号处理的基石)的一种快速算法,其时间复杂度仅为O

(Nlog(N));比时间效率更为重要的是,快速傅立叶算法非常容易用硬件实现,因此它在电子技术领域得到

极其广泛的应用。

日后,我会在我的经典算法研究系列,着重阐述此算法。

 

这个是《数字信号处理》的内容,略知一二。


九、1977 整数关系探测算法
[1977: Helaman Ferguson and Rodney Forcade of Brigham Young University advance an integer

relation detection algorithm .]
1977年:Helaman Ferguson和 伯明翰大学的Rodney Forcade,提出了Forcade检测算法的整数关系。

整数关系探测是个古老的问题,其历史甚至可以追溯到欧几里德的时代。具体的说:
给定—组实数X1,X2,...,Xn,是否存在不全为零的整数a1,a2,...an,使得:a1 x 1 +a2 x2 + . . . + an x

n =0?
这一年BrighamYoung大学的Helaman Ferguson 和Rodney Forcade解决了这一问题。
该算法应用于“简化量子场论中的Feynman图的计算”。ok,它并不要你懂,了解即可。:D。

 

看不懂这个问题的背景。


十、1987 快速多极算法
[1987: Leslie Greengard and Vladimir Rokhlin of Yale University invent the fast multipole

algorithm .]

1987年:莱斯利的Greengard,和耶鲁大学的Rokhlin发明了快速多极算法。

此快速多极算法用来计算“经由引力或静电力相互作用的N 个粒子运动的精确计算
——例如银河系中的星体,或者蛋白质中的原子间的相互作用”。

 

原理是力学范畴的。

机器学习应该了解的十大算法

毫无疑问,近些年机器学习和人工智能领域受到了越来越多的关注。随着大数据成为当下工业界最火爆的技术趋势,机器学习也借助大数据在预测和推荐方面取得了惊人的成绩。比较有名的机器学习案例包括Netflix根据...
  • abv123456789
  • abv123456789
  • 2016年08月23日 11:32
  • 4835

十大经典算法

不久前的某一天,我在浏览Reddit发现了一篇有趣的文章《统治世界的十大算法》,作者George Dvorsky在那篇文章中试图解释算法之于当今世界的重要性,以及哪些算法对人类文明最为重要。 此时此...
  • wwp_love_biancheng
  • wwp_love_biancheng
  • 2014年06月19日 16:19
  • 885

十大经典排序算法总结——Java实现

引 这段时间博主逐步替换为Java的实现 //博主留 2017.9.15 //2017.10.10完成冒泡排序的修改 //2017.10.11完成选择排序、插入排序和希尔排序的修改 //2017.1...
  • WangQYoho
  • WangQYoho
  • 2016年09月19日 12:12
  • 2098

机器学习与数据挖掘中的十大经典算法

机器学习与数据挖掘中的十大经典算法 背景: top10算法的前期背景是吴教授在香港做了一个关于数据挖掘top10挑战的一个报告,会后有一名内地的教授提出了一个类似的想法。吴教授觉得非常好,...
  • crazyhacking
  • crazyhacking
  • 2014年02月17日 11:04
  • 10966

轻松看懂机器学习十大常用算法

转自:http://mp.sohu.com/profile?xpt=bWF0aGFuZGFsZ29yaXRobUBzb2h1LmNvbQ== 通过本篇文章大家可以对ML的常用算法形成常识性的认识...
  • k_shmily
  • k_shmily
  • 2016年11月07日 08:56
  • 3245

机器学习十大经典算法

原文地址:http://blog.jobbole.com/74438/ 朴素贝叶斯: 有以下几个地方需要注意: 1. 如果给出的特征向量长度可能不同,这是需要归一化为通长度的向量(这...
  • dajinniu
  • dajinniu
  • 2015年10月17日 21:44
  • 1418

数据挖掘18种候选算法和十大经典算法

国际权威的学术组织theIEEE International Conference on Data Mining (ICDM) 2006年12月评选出了数据挖掘领域的十大经典算法。不仅仅是选中的十大算...
  • DQ_DM
  • DQ_DM
  • 2014年07月21日 15:25
  • 1309

JS的十大经典算法排序

十大经典算法排序总结对比 一张图概括: 名词解释: n: 数据规模 k:“桶”的个数 In-place: 占用常数内存,不占用额外内存 Out-place: 占用额...
  • liaozhongping
  • liaozhongping
  • 2017年05月26日 10:48
  • 516

统治世界的十大算法

软件正在统治世界。而软件的核心则是算法。算法千千万万,又有哪些算法属于“皇冠上的珍珠”呢?Marcos Otero 给出了他的看法。 什么是算法? 通俗而言,算法是一个定义明确的计算过...
  • abcd1f2
  • abcd1f2
  • 2015年08月07日 23:32
  • 356

统治世界的十大算法

统治世界的十大算法   前言   软件正在统治世界.而软件的核心则是算法.算法千千万,又有哪些算法属于”皇冠的珍珠”呢?       什么是算法   通...
  • shanyongxu
  • shanyongxu
  • 2015年08月26日 11:19
  • 1329
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:十大算法
举报原因:
原因补充:

(最多只允许输入30个字)