你一定不知道!二十世纪最伟大的十大算法

[1946:JohnvonNeumann,StanUlam,andNickMetropolis,allattheLosAlamosScientificLaboratory,cookuptheMetropolisalgorithm,alsoknownastheMonteCarlomethod.]

1946年,美国拉斯阿莫斯国家实验室的三位科学家JohnvonNeumann,StanUlam和NickMetropolis共同发明,被称为蒙特卡洛方法。

它的具体定义是:在广场上画一个边长一米的正方形,在正方形内部随意用粉笔画一个不规则的形状,现在要计算这个不规则图形的面积,怎么计算列

蒙特卡洛(MonteCarlo)方法告诉我们,均匀的向该正方形内撒N(N是一个很大的自然数)个黄豆,随后数数有多少个黄豆在这个不规则几何形状内部,比如说有M个,那么,这个奇怪形状的面积便近似于M/N,N越大,算出来的值便越精确。

在这里我们要假定豆子都在一个平面上,相互之间没有重叠。(撒黄豆只是一个比喻。)蒙特卡洛方法可用于近似计算圆周率:让计算机每次随机生成两个0到1之间的数,看这两个实数是否在单位圆内。生成一系列随机点,统计单位圆内的点数与总点数,内接圆面积和正方形面积之比为PI:4,PI为圆周率。当随机点取得越多(但即使取10的9次方个随机点时,其结果也仅在前4位与圆周率吻合)时,其结果越接近于圆周率。

二、1947单纯形法

[1947:GeorgeDantzig,attheRANDCorporation,createsthesimplexmethodforlinearprogramming.]

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

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

所谓线性规划,简单的说,就是给定一组线性(所有变量都是一次幂)约束条件(例如a1*x1+b1*x2+c1*x3>0),求一个给定的目标函数的极值。

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

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

三、1950Krylov子空间迭代法

[1950:MagnusHestenes,EduardStiefel,andCorneliusLanczos,allfromtheInstituteforNumericalAnalysisattheNationalBureauofStandards,initiatethedevelopmentofKrylovsubspaceiterationmethods.]

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

Krylov子空间迭代法是用来求解形如Ax=b的方程,A是一个n*n的矩阵,当n充分大时,直接计算变得非常困难,而Krylov方法则巧妙地将其变为Kxi+1=Kxi+b-Axi的迭代形式来求解。

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

[1951:AlstonHouseholderofOakRidgeNationalLaboratoryformalizesthedecompositionalapproachtomatrixcomputations.]

1951年,阿尔斯通橡树岭国家实验室的AlstonHouseholder提出,矩阵计算的分解方法。这个算法证明了任何矩阵都可以分解为三角、对角、正交和其他特殊形式的矩阵,该算法的意义使得开发灵活的矩阵计算软件包成为可能。

五、1957优化的Fortran编译器

[1957:JohnBackusleadsateamatIBMindevelopingtheFortranoptimizingcompiler.]

1957年:约翰巴库斯领导开发的IBM的团队,创造了Fortran优化编译器。Fortran,亦译为福传,是由FormulaTranslation两个字所组合而成,意思是“公式翻译”。它是世界上第一个被正式采用并流传至今的高级编程语言。这个语言现在,已经发展到了,Fortran2008,并为人们所熟知。

六、1959-61计算矩阵特征值的QR算法

[1959–61:J.G.F.FrancisofFerrantiLtd,London,findsastablemethodforcomputingeigenvalues,knownastheQRalgorithm.]

1959-61:伦敦费伦蒂有限公司的J.G.F.Francis,找到了一种稳定的特征值的计算方法,这就是著名的QR算法。这也是一个和线性代数有关的算法,学过线性代数的应该记得“矩阵的特征值”,计算特征值是矩阵计算的最核心内容之一,传统的求解方案涉及到高次方程求根,当问题规模大的时候十分困难。

QR算法把矩阵分解成一个正交矩阵(希望读此文的你,知道什么是正交矩阵。:D。)与一个上三角矩阵的积,和前面提到的Krylov方法类似,这又是一个迭代算法,它把复杂的高次方程求根问题化简为阶段性的易于计算的子步骤,使得用计算机求解大规模矩阵特征值成为可能。这个算法的作者是来自英国伦敦的J.G.F.Francis。

七、1962快速排序算法

[1962:TonyHoareofElliottBrothers,Ltd.,London,presentsQuicksort.]

1962年:伦敦的,托尼埃利奥特兄弟有限公司,霍尔提出了快速排序。哈哈,恭喜你,终于看到了可能是你第一个比较熟悉的算法~。

快速排序算法作为排序算法中的经典算法,它被应用的影子随处可见。快速排序算法最早由TonyHoare爵士设计,它的基本思想是将待排序列分为两半,左边的一半总是“小的”,右边的一半总是“大的”,这一过程不断递归持续下去,直到整个序列有序。

◆◆◆八、1965快速傅立叶变换

[1965:JamesCooleyoftheIBMT.J.WatsonResearchCenterandJohnTukeyofPrincetonUniversityandAT&TBellLaboratoriesunveilthefastFouriertransform.]

九、1977整数关系探测算法

[1977:HelamanFergusonandRodneyForcadeofBrighamYoungUniversityadvanceanintegerrelationdetectionalgorithm.]

1977年:HelamanFerguson和伯明翰大学的RodneyForcade,提出了Forcade检测算法的整数关系。

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

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

十、1987快速多极算法

[1987:LeslieGreengardandVladimirRokhlinofYaleUniversityinventthefastmultipolealgorithm.]

1987年:Greengard,和耶鲁大学的Rokhlin发明了快速多极算法。此快速多极算法用来计算“经由引力或静电力相互作用的N个粒子运动的精确计算——例如银河系中的星体,或者蛋白质中的原子间的相互作用”。

参考文献:TheBestofthe20thCentury:EditorsNameTop10Algorithms。

THE END
1.十大经典排序算法算法思想+图解+代码数据结构与算法笔记本文详细介绍了十大经典排序算法,包括冒泡排序、选择排序、插入排序、堆排序、归并排序、快速排序、希尔排序、桶排序、计数排序和基数排序。讨论了每种排序算法的思想、时间复杂度、稳定性,并提供了相应的算法实现。 摘要由CSDN通过智能技术生成 前言:文中大部分为本人收集整理,综合学习资料,个人理解……。希望能帮助你https://blog.csdn.net/weixin_64811333/article/details/128702619
2.十大经典数据挖掘算法详解【十大经典数据挖掘算法详解】 以下是个人觉得算法讲解比较清晰易懂的博客! C4.5 K-Means SVM Apriori使用Apriori进行关联分析(一)使用Apriorhttps://www.jianshu.com/p/dc16ac2403e2
3.计算机十大经典算法.pdf【计算机】十大经典算法.pdf 47页内容提供方:iris 大小:1.26 MB 字数:约4.44万字 发布时间:2018-05-24发布于四川 浏览人气:805 下载次数:仅上传者可见 收藏次数:1 需要金币:*** 金币 (10金币=人民币1元)【计算机】十大经典算法.pdf 关闭预览 想预览更多内容,点击免费在线预览全文 免费在线预览https://max.book118.com/html/2018/0522/168046795.shtm
4.当今世界最为经典的十大算法封碎当今世界,已经被发现或创造的经典算法数不胜数。如果,一定要投票选出你最看重的十大算法,你会作何选择列? 曾有人在StackExchange上发起了提问,向网友们征集当今世界最为经典的十大算法。众人在一大堆入围算法中进行投票,最终得出了票数最高的以下十个算法。 https://www.iteye.com/blog/974039
5.95%的算法都基于这6种基本算法思想!!2.3使用分治法求解的一些经典问题 ·二分查找 ·归并排序 ·快速排序 ·汉诺塔问题 ·React 时间分片 三、贪心算法 3.1算法策略 贪心算法,名思义,总是做出当前的最优选择,即期望通过局部的最优选择获得整体的最优选择。 某种意义上说,贪心算法是很贪婪、很目光https://mp.weixin.qq.com/s?__biz=MzI2OTE0ODY5Mw==&mid=2247525996&idx=1&sn=3d76f5fc2feb0559b4c92949799975fa&chksm=ebd22c9d8f67e1092763fb3e582a7141482e85220e61e5a359775545e902954f3228873b3b53&scene=27
6.收藏!当今最流行的10种人工智能算法它是一个经典的二叉树,每次分割都会做出“是” 或“否”的决定,直到模型到达结果节点。 在这一算法中,训练模型通过学习树表示(Tree representation)的决策规则来学习预测目标变量的值。树是由具有相应属性的节点组成的。在每个节点上,我们根据可用的特征询问有关数据的问题。左右分支代表可能的答案。最终节点(即叶https://zhuanlan.zhihu.com/p/670999570
7.学习详解数据挖掘十大经典算法!腾讯云开发者社区国际权威的学术组织the IEEE International Conference on Data Mining (ICDM) 2006年12月评选出了数据挖掘领域的十大经典算法:C4.5, k-Means, SVM, Apriori, EM, PageRank, AdaBoost, kNN, Naive Bayes, and CART. 不仅仅是选中的十大算法,其实参加评选的18种算法,实际上随便拿出一种来都可以称得上是经典算法https://cloud.tencent.com/developer/article/1105704
8.十大数学算法在计算机科学中,数学算法被广泛应用于图像处理、数据分析、机器学习等领域。下面将介绍十大经典数学算法,它们涵盖了数值计算、图论、概率统计等多个数学领域的核心算法。 一、牛顿法 牛顿法是一种用于求解方程的迭代数值方法。它通过不断逼近函数的根,实现方程的求解。牛顿法的核心思想是利用函数的局部线性近似来逼近根https://wenku.baidu.com/view/30500e51e1bd960590c69ec3d5bbfd0a7856d569.html
9.MITTechnologyReview2021年“十大突破性技术”解读本年度MIT Technology Review“十大突破性技术”分别为:mRNA疫苗、生成式预训练模型、数据信托、锂金属电池、数字接触追踪、超高精度定位、远程技术、多技能型人工智能、TikTok推荐算法和绿色氢能。为了让广大读者深入了解这十项技术的科学价值及其背后的科学故事,本刊特邀请各领域著名科学家分别对其进行深入解读,以激发https://mse.xauat.edu.cn/info/1025/1521.htm
10.十大经典排序算法(二)51CTO博客十大经典排序算法(二) 快速排序 快速排序(quick sort)通过一个切分元素将数组分为两个子数组,左子数组小于等于切分元素,右子数组大于等于切分元素,将这两个子数组排序也就将整个数组排序了。 算法步骤 从数列中挑出一个元素,称为 "基准"(pivot); 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准https://blog.51cto.com/u_15064638/2601679