关于20世纪10个最伟大的算法

本世纪初,美国物理学会(AmericanInstituteofPhysics)和IEEE计算机社团(IEEEComputerSociety)的一本联合刊物《科学与工程中的计算》发表了由田纳西大学的JackDongarra和橡树岭国家实验室的FrancisSullivan联名撰写的“世纪十大算法”一文,该文“试图整理出在20世纪对科学和工程领域的发展产生最大影响力的十大算法”。作者苦于“任何选择都将是充满争议的,因为实在是没有最好的算法”,他们只好用编年顺序依次列出了这十项算法领域人类智慧的巅峰之作——给出了一份没有排名的算法排行榜

1、蒙特卡罗算法。1946:JohnvonNeumann,StanUlam,andNickMetropolis

2、单纯形方法。1947:GeorgeDantzig.

3、Krylov子空间迭代算法。1950:MagnusHestenes,EduardStiefel,andCorneliusLanczos。

4、矩阵分解算法。1951:AlstonHouseholder。

5、Fotran最优化编译器。1957:JohnBackus。Fotran在科学计算中具有里程碑性质

6、QR算法。1959–61:J.G.F.Francis

7、快速排序算法。1962:TonyHoare

8、FFT算法。1965:JamesCooley

9、整数关系确定算法(IntegerRelationDetectingAlgorithms)。1977:HelamanFergusonandRodneyForcade

10、快速多极算法(FastMultipoleAlgorithms)。1987:LeslieGreengardandVladimirRokhlin

抛开这种评选是否合理,讲这十个算法的主要原因是其中7个算法(红色)是笔者在实际工程中用过的,有些还做过深入研究,都是工业软件研发的底层技术。

1.蒙特卡罗算法:一种利用随机数的算法,在连续性计算困难的地方,可以近似代替,另外在很多需要预测领域也能派上用场。主要问题是要平衡精度和计算量,曾经多重积分为了提高一点点的精度,计算量要提高一个数量级。

2.单纯形方法:是线性规划优化算法中最基本的算法。很多其他优化算法比如遗传算法,模拟退火,神经网络思路都比单纯形方法更复杂,入选理由可能跟快排一样,思路开创性,对后来算法的影响比较大。

3.Krylov子空间迭代算法:这个在公众号里多次介绍,在实际开发中也经常使用。求解大规模线性方程组必用!(大规模一般DOF至少在百万上,几千万很平常)

4.矩阵分解算法:求解大规模线性方程组过程中必用的数值方法!

5.QR算法:也是求解大规模线性方程组过程中常用的数值方法

6.FFT算法:快速傅里叶变换,不多解释。在电磁场频域时域变换用到

7.快速多极算法:矩量法,边界元法等满秩矩阵求解大规模线性方程组必用算法。商业软件FEKO的多层快速多级在此基础算法上发展而来。

可以看到有四种算法都和大规模线性方程组求解有关。

1JackDongarra,FrancisSullivan,GuestEditorsIntroductionTheTop10Algorithms,ComputinginScienceandEngineering,Volume2,Number1,January/February2000,pages22-23.

2BarryCipra,TheBestofthe20thCentury:EditorsNameTop10Algorithms,SIAMNews,Volume33,Number4,May2000,page1.

3TheTop10ComputationalMethodsofthe20thCentury,IACMExpressions,Number11,September2001,pages5-9.

THE END
1.「干货」编程语言十大经典算法,你知道几个?算法与数据结构是计算机学习路上的内功心法,也是学好编程语言的重要基础。今天给大家介绍一下十大经典算法。 十大经典算法分别是:冒泡排序,插入排序,选择排序,希尔排序,快速排序,归并排序,桶排序,堆排序,计数排序,基数排序。 预备知识:算法稳定性 如果a==b,排序前 a 在 b 的前面,排序后 a 在 b 的后面,只要会https://zhuanlan.zhihu.com/p/400262733
2.数据挖掘十大经典算法walt算法不仅仅是选中的十大算法,其实参加评选的18种算法,实际上随便拿出一种来都可以称得上是经典算法,它们在数据挖掘领域都产生了极为深远的影响。 1.C4.5 C4.5算法是机器学习算法中的一种分类决策树算法,其核心算法是ID3算法. C4.5算法继承了ID3算法的优点,并在以下几方面对ID3算法进行了改进: https://blog.csdn.net/xiaoshunzi111/article/details/49786649
3.细数二十世纪最伟大的10大算法(Top10)腾讯云开发者社区发明十大算法的其中几位算法大师 一、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.] 蒙特卡洛方法的应用场景很多,横跨物理、金融、计算机。拿计算机科学来举https://cloud.tencent.com/developer/article/1170545
4.计算机十大经典算法.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
5.20世纪十大算法,除了“快排”你还会啥?文章整理出在20世纪对科学和工程领域的发展产生最大影响力的十大算法。当然,任何选择都是充满争议的,因为实在是没有最好的算法。 所以只好用编年顺序,依次列出了这十项算法领域人类智慧的巅峰之作——给出了一份没有排名的算法排行榜。 1946 蒙特·卡洛方法 https://m.sohu.com/a/727611060_121288514
6.轻松看懂机器学习十大常用算法西南石油大学轻松看懂机器学习十大常用算法 通过本篇文章大家可以对ML的常用算法形成常识性的认识。没有代码,没有复杂的理论推导,仅是图解,介绍这些算法是什么以及如何应用(例子主要是分类问题)。以后有机会再对单个算法做深入地解析。 一、决策树 二、随机森林算法 三、逻辑回归https://www.swpu.edu.cn/eelab/info/1090/2296.htm
7.Java超详细讲解十大排序算法面试无忧java这篇文章主要介绍了Java常用的排序算法及代码实现,在Java开发中,对排序的应用需要熟练的掌握,这样才能够确保Java学习时候能够有扎实的基础能力。那Java有哪些排序算法呢?本文小编就来详细说说Java常见的排序算法,需要的朋友可以参考一下+ 目录 排序算法的稳定性: 假定在待排序的记录序列中,存在多个具有相同的关键字的https://www.jb51.net/article/243720.htm
8.中国科普博览显然,不同领域、不同时代的人,对什么是“十大算法”自然会有不同看法和不同的选择,不可能统一,也没有必要统一。应该说,受时间、经验、领域和参选人数等诸多限制,入选的十大算法,不一定个个都是最优秀的;受条件和个数所限,没有入选的有些算法,也不能说是不好的;有些算法在不同选法中出现,也是自然的;每类http://www.kepu.net.cn/blog/zhangjianzhong/201903/t20190327_475674.html
9.杭州互联网法院:数据和算法十大典型案例通过本判决,首次确立了公共数据使用的基本原则,厘清了公共数据合法使用的边界,并从确保数据来源合法、数据安全、数据质量等方面,约束数据使用行为,以促进大数据分析企业通过改进算法技术、规范数据处理规则等,实现良性有序发展。本案获得最高人民法院2021年度全国优秀案例分析二等奖,被评为2020年中国十大最具研究价值知识http://lylsfy.sdcourt.gov.cn/lylsfy/393876/tszs5176/8935261/index.html
10.十大排序算法的复杂度排序方式稳定性总结十大排序算法的复杂度、排序方式、稳定性 原理简述 1.冒泡排序 1)比较相邻的元素,如果前一个比后一个大,就交换它们。 2)对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。这样一轮比较结束,最大的数被移动到了最后的位置。 3)针对所有的元素重复以上的步骤,除了最后一个。 https://www.jianshu.com/p/00dff6f39917
11.数据挖掘领域十大经典算法数据挖掘领域十大经典算法 下面是参与评比的18种算法,实际上随便拿出一种来都可以称得上是经典算法,它们在数据挖掘领域都产生了极为深远的影响。在我们学习数据挖掘时,可以以这18种算法为主线,如果能把每一种算法都弄懂,整个数据挖掘领域就掌握得差不多了。另外,也可以用这18种算法的熟悉程度来判断自己知识的掌握程度https://www.cda.cn/view/744.html
12.程序员必会的十大算法算法是所有程序员必备的基本功,不会算法的程序员都容易被耻笑,今天就为大家盘点出所有程序员都需要掌握的十大算法,可以依次进行学习 一.Floyd Warshall算法 Floyd-Warshall算法,中文称弗洛伊德算法或佛洛伊德算法,是解决任意两点间的最短路径的一种算法,可以正确处理有向图或负权(但不可存在负权回路)的最短路径https://baijiahao.baidu.com/s?id=1742496629268867635&wfr=spider&for=pc
13.二十世纪的10大算法伟大的算法是计算的诗篇。对20世纪的科学发展和工程实践产生巨大影响的10大算法是: 1. 1946年计算蒙特卡洛过程的伦敦算法。对那些过于复杂给不出精确解的问题,该算法可使蒙特卡洛过程有效地给出问题的解。 2. 1947年线性规划的单纯形算法。这一优美算法解决了规划和决策过程中的共同问题。 https://worldscience.cn/qk/2000/5y/sjkx/623945.shtml