二十世纪最伟大的10大算法
- 格式:doc
- 大小:34.00 KB
- 文档页数:3
英国期刊《物理世界》读者投票选出世上最伟大的十个公式:1、麦克斯韦尔方程组,
四个方程分别对应于高斯定律,磁场的高斯定律, Maxwell–Faraday方程(Faraday's law of induction),安培环流定律(with Maxwell's correction)
2、将e、i、pi放在同一式子的欧拉公式,
其中e是欧拉数, i是虚数单位.
3、牛顿第二定律,
F= m a.
4、勾股定理,
5、爱因斯坦的质能方程,
6、薛定谔方程,
7、哥德巴赫猜想,
任一大于2的偶数,都可表示成两个质数之和。
8、德布罗意方程组(给出了波长、能量等之间的关系)
德布罗意说明了波长和动量成反比;频率和总能成正比之关系,是路易·德布罗意于1923年在他的博士论文提出的。
第一德布罗意方程指出,粒子波长λ(亦称德布罗意波长)和动量p的关系:(下式中普朗克常数h、粒子静质量m、粒子速度v、洛伦兹因子γ和真空光速c)
第二德布罗意方程指出频率f和总能E的关系:
这两个式子通常写作
9、傅立叶变换,
for every real number ξ.
傅立叶逆变换
for every real number x.
10、圆的周长公式。
圆的周长=2×半径×圆周率=直径×圆周率。
世界史上10个最伟大的公式,没有它们就没有现在的世界1、麦克斯韦方程组:将电场和磁场有机地统一成完整的电磁场。
并创立了电磁场理论,而没有电磁学理论,就不会有现在的社会文明。
不管是对于我们对宇宙的理解,还是对于现代科技的发展,这一方程组都意义重大。
微观麦克斯韦方程组宏观麦克斯韦方程组2、薛定谔方程:薛定谔方程的解完备地描述物理系统里,微观尺寸粒子的量子行为;这包括分子系统、原子系统、亚原子系统;另外,薛定谔方程的解还可完备地描述宏观系统,可能乃至整个宇宙。
薛定谔方程3、圆周长公式:精确计算圆周长、圆面积、球体积等几何形状的关键值。
也可应用于工程师或物理学家要进行较精密的计算圆周长公式4、欧拉公式:欧拉公式也被称为世界上最完美的公式,在数学历史上有很多公式都是欧拉发现的,它们都叫做欧拉公式,它们分散在各个数学分支之中。
如:分式里的、复变函数论里的、三角形中的、拓扑学里的、初等数论里的欧拉公式等等。
欧拉公式5、牛顿第二定律:牛顿第二定律证明物体加速度的大小跟作用力成正比,跟物体的质量成反比,且与物体质量的倒数成正比;加速度的方向跟作用力的方向相同。
牛顿第二定律6、1+1=2:这个公式不需要名称,不需要解释,大家不要强行给它加戏码了。
1+1=27、勾股定理/毕达哥拉斯定理:勾股定理是几何学中的明珠,所以它充满魅力,千百年来,人们对它的证明趋之若骛,其中有著名的数学家,也有业余数学爱好者,有普通的老百姓,也有尊贵的政要权贵,甚至有国家总统。
也许是因为勾股定理既重要又简单,更容易吸引人,才使它成百次地反复被人炒作,反复被人论证。
勾股定理/毕达哥拉斯定理8、傅里叶变换:如果没有它,就没有今天的电子计算机,我们除了要感谢国家给我们上网以外,还得感谢它,另外虽然看上去是中文名,但他是法国人。
但不幸的是,傅里叶分析的公式看起来太复杂了,所以很多新生上来就懵圈并从此对它深恶痛绝。
傅里叶变换傅里叶变换9、德布罗意方程组:德布罗意认为电子不仅是一个粒子,也是一种波,它还有“波长”。
人类历史上的29个重大算法1. 蒙特卡洛方法—用随机数模拟处理问题的算法。
一般用于对复杂问题进行近似求解。
2. 快速排序算法—一种常用的排序算法,采用分治策略,平均时间复杂度为O(nlogn)。
3. Dijkstra 最短路径算法—用于计算图中两个点之间的最短路径,采用贪心思想。
4. KMP 字符串匹配算法—通过预处理模式串,避免不必要的匹配,从而提高算法效率。
5. RSA 加密算法—一种非对称加密算法,在信息传输领域中广泛应用。
6. 贪心算法—一种算法思想,通过局部最优选择来达到整体最优解。
7. 分治算法—一种分而治之的算法思想,处理问题时将其分成子问题分别处理,最终合并成一个总问题的解。
8. 梯度下降算法—用于寻找函数的最小值或最大值,例如神经网络的参数优化。
9. 动态规划算法—用于解决具有重叠子问题和最优子结构性质的问题。
10. 二分查找算法—用于在有序数组中查找指定元素的算法,时间复杂度为O(logn)。
11. 哈希表算法—基于哈希函数实现查找、插入和删除操作,时间复杂度为O(1)。
12. 最小生成树算法—用于求加权连通图的最小生成树,包括Prim算法和Kruskal算法。
13. Floyd 算法—用于求所有点对之间的最短路径,时间复杂度为O(n^3)。
14. A* 算法—用于图的最短路径搜索,结合了Dijkstra算法和贪心算法的思想,常用于人工智能领域。
15. 布隆过滤器算法—用于判断一个元素是否存在于集合中,具有高效率和低空间占用的优点。
16. PageRank 算法—用于衡量网页排名的算法,由谷歌公司开发。
17. 马尔可夫链蒙特卡洛算法—用于采样高维分布的一类重要随机算法。
18. SHA 加密算法—用于数字签名和消息认证等领域。
19. B 树算法—一种平衡查找树,常用于数据库系统中,具有高效率和低磁盘访问次数的特点。
20. 基数排序算法—一种特殊的排序算法,适用于排序的数据范围比较小的情况下。
世界上伟大的十大公式:1.文明的基础:勾股定理直角三角形斜边长度c的平方等于另两边a、b长度的平方和。
C2=A2+B2勾股定理独立的被古中国、古印度、古希腊所发现,自发现便广泛应用于工程建筑、天文、航海等领域。
对于定理的论证方法层不不穷,至今估计至少有400余种方法。
2.牛顿第二定律牛顿第二定律是经典力学的灵魂,定律指出:运动的变化与施加的力成正比,并且变化的方向沿着所施加力的方向。
F=ma这个简单的公式,将物体所受力与质量、以及描述其运动的加速度完美的统一到一起,深刻的影响了力学的发展。
牛顿否定了前人运动变化要从内部解释的观念,而是从外部施加的力考虑。
3.万有引力定律万有引力在所有物体之间普遍存在。
两个物体之间万有引力的大小与两物体的质量成正比,与两个物体距离的平方成反比。
F g=Gm1m2/r2从苹果落地到万有引力,这可能是人类历史上最伟大的类比联想和归纳。
万有引力定律不仅被用于解释天体行星的运动,其影响力扩展到了哲学、神学等领域。
4.欧拉公式一个将自然对数的底、圆周率、虚数i、1和0这5个数学上的基本概念,联系在一起的神秘公式。
e iπ+1=0这个简单、完美的方程被称为上帝的方程,可以看成下面方程的特例:e iπ=cosx+isinx当取x=π时,即可得到欧拉公式。
欧拉之后,印度的天才数学家拉马努金曾独立地发现该方程,但当他知道自己不是最先发现而倍感沮丧。
5.热力学第二定律世界的能量总量是恒定的,其熵值向着达到最大值的方向变化。
S,-S≥06.麦克斯韦方程组19世纪最重要的事件,一定是麦克斯韦发现了电动力学定律。
它完整地描述了包括电磁学在内的物理现象,说明了变化的磁场如何产生变换的电场,强调磁单极是不存在的,描述了电流和变化的电场如何产生磁场以及电场是如何产生。
麦克斯韦方程组描述的电磁场开创了一个全新的领域,超出了牛顿力学的范畴,并预测了不可思议的穿越时空的电磁波。
麦克斯韦的工作指向了:电磁波的产生和探测问题;以太的漂移的测量问题;使用更简洁的方式对方称进行重写,以方便实际应用。
世界上最伟大的十个公式及其实际应用(三)本来不想写这一篇了,因为阅读量让我很伤心。
相比数学和科普,大家对奇闻异事更感兴趣。
但是既然开始了,我就要善始善终。
今天我就介绍一下剩余的5个公式,不期待有多少人看,内容就简略些吧,跟喜欢我前两篇的朋友说声抱歉。
道歉6.欧拉公式。
提出者:莱昂哈德·欧拉。
欧拉公式它是世界公认的最完美的数学公式之一,提出者是数学领域的大神级天才人物——欧拉。
他生于1707年4月15日,瑞士人,13岁考入巴塞尔大学,15岁大学毕业,16岁获得硕士学位。
他是数学史上最多产的数学家,平均每年写出八百多页的论文,还写了大量的力学、分析学、几何学、变分法等的课本,《无穷小分析引论》、《微分学原理》、《积分学原理》等都是他的经典著作。
晚年的他因为研究数学过于劳累失去了一只眼睛的视力,但他并没有影响生活,还是一个好丈夫、好父亲,很多数学推算甚至是在他孩子的尿布上、手纸上完成的。
欧拉欧拉公式的另一个形式如下图。
它是用在复分析领域的公式,将三角函数与复数指数函数相关联。
欧拉公式该公式的用途十分广泛,下面我们在最简单的圆和三角形中做一描述:欧拉公式简图欧拉公式简图这个公式伟大在于包含了数学的一切。
最重要的运算符号“+”含于其中,加号构成其余运算符号;最重要的关系符号“=”含于其中,数理关系的基础;最重要的常数“π”含于其中,意义前文讲过;最重要的两个数字0和1含于其中,0、1建立了信息时代;最重要的自然对数的底“e”含于其中,螺旋图形和微积分的根基;最重要的虚数单位“i”含于其中,“i”使数轴上的问题扩展到了平面。
国家大剧院没有欧拉公式及其衍生公式,曲面的计算和设计就是无根之水,国家大剧院、大兴机场、上海中心等等著名的流线型设计建筑就没有了科学数据,飞机气动性、流体力学、螺旋桨角度等也就无法计算。
气动性设计7.质能方程。
提出者:阿尔伯特·爱因斯坦。
质能方程质能方程是人类第一次认识到物质的质量与能量之间的关系,其重要性和应用不用我多说了吧?没有质能方程,就没有原子弹、氢弹的诞生。
十大经典算法范文1.算法:算法用于在大量数据中找到目标值或满足特定条件的值。
最常用的算法有二分查找和深度优先(DFS)。
2.排序算法:排序算法用于将一组数据按照一定的顺序排列。
最著名的排序算法有冒泡排序、插入排序、选择排序、快速排序和归并排序。
3.哈希算法:哈希算法将输入数据映射到一个固定大小的哈希值,用于数据的快速查找和存储。
最常用的哈希算法有MD5和SHA算法。
4.动态规划算法:动态规划算法是一种解决多阶段决策过程最优化问题的方法。
它将问题分解成一系列子问题,通过求解子问题的最优解来得到原问题的最优解。
5. 贪心算法:贪心算法是一种求解最优化问题的策略,它每次选择局部最优解,并希望通过这种选择得到全局最优解。
经典的贪心算法有Prim算法和Kruskal算法。
6. 图算法:图算法用于解决与图相关的问题,如最短路径问题、最小生成树问题和网络流问题。
最著名的图算法有Dijkstra算法、Floyd-Warshall算法和BFS算法。
7.字符串匹配算法:字符串匹配算法用于在一个字符串中查找特定的子串。
最常用的字符串匹配算法有朴素字符串匹配算法和KMP算法。
8. 最小生成树算法:最小生成树算法用于从一个连通图中找到最小的生成树,该树包含图中的所有顶点,并且边的权重之和最小。
最著名的最小生成树算法有Prim算法和Kruskal算法。
9.图像处理算法:图像处理算法用于对图像进行各种处理,如图像的平滑、锐化、边缘检测和图像的压缩等。
最常用的图像处理算法有模糊算法和卷积算法。
10.机器学习算法:机器学习算法是一种将数据输入模型中进行训练,并通过学习得到模型的参数,并用于预测未来的数据。
最常用的机器学习算法有线性回归、逻辑回归、决策树和支持向量机等。
以上是十大经典算法的介绍。
这些算法在计算机科学与算法领域具有重要的地位和广泛的应用,对于理解和解决各种问题都非常有帮助。
十大经典算法排序十大经典算法排序是指在计算机科学和算法领域中被广泛认可和应用的十个经典算法,它们具有重要的理论和实际意义。
下面将按照一定的顺序列举这十个经典算法,并进行简要的介绍。
1. 冒泡排序(Bubble Sort)冒泡排序是一种简单但效率较低的排序算法。
它的基本思想是通过相邻元素之间的比较和交换,将最大(或最小)的元素逐步“冒泡”到数列的末尾。
冒泡排序的时间复杂度为O(n^2)。
2. 快速排序(Quick Sort)快速排序是一种高效的排序算法,它采用分治的思想。
通过选择一个基准元素,将数列分割成两部分,其中一部分的元素都小于基准,另一部分的元素都大于基准。
然后递归地对这两部分进行排序。
快速排序的平均时间复杂度为O(nlogn)。
3. 归并排序(Merge Sort)归并排序也是一种高效的排序算法,它同样采用分治的思想。
将数列递归地分成两半,对每一半进行排序,然后将两个有序的子数列合并成一个有序的数列。
归并排序的时间复杂度为O(nlogn)。
4. 插入排序(Insertion Sort)插入排序是一种简单但有效的排序算法。
它的基本思想是将数列分成已排序和未排序两部分,每次从未排序部分取一个元素,插入到已排序部分的合适位置。
插入排序的时间复杂度为O(n^2)。
5. 选择排序(Selection Sort)选择排序是一种简单但效率较低的排序算法。
它的基本思想是每次从未排序部分选择最小(或最大)的元素,放到已排序部分的末尾。
选择排序的时间复杂度为O(n^2)。
6. 堆排序(Heap Sort)堆排序是一种高效的排序算法,它利用堆这种数据结构来进行排序。
将待排序数列构建成一个大根堆(或小根堆),然后依次取出堆顶元素,得到有序数列。
堆排序的时间复杂度为O(nlogn)。
7. 计数排序(Counting Sort)计数排序是一种非比较排序算法,它适用于数列元素的取值范围较小的情况。
计数排序的基本思想是统计每个元素出现的次数,然后根据统计结果将元素放置到正确的位置上。
⼗⼤经典算法总结Damonare20⼩时前⼗⼤经典算法总结(JavaScript描述)前⾔读者⾃⾏尝试可以,博主在github建了个库,欢迎star.读者可以Clone下来本地尝试。
此博⽂配合源码体验更棒哦~~~个⼈博客:原⽂地址:这世界上总存在着那么⼀些看似相似但有完全不同的东西,⽐如雷锋和雷峰塔,⼩平和⼩平头,玛丽和马⾥奥,Java和javascript.... 当年javascript为了抱Java⼤腿恬不知耻的让⾃⼰变成了Java的⼲⼉⼦,哦,不是应该是跪舔,毕竟都跟了Java的姓了。
可如今,javascript来了个咸鱼翻⾝,⼏乎要统治web领域,Nodejs,React Native的出现使得javascript在后端和移动端都开始占有了⼀席之地。
可以这么说,在Web的江湖,JavaScript可谓风头⽆两,已经坐上了头把交椅。
在传统的计算机算法和数据结构领域,⼤多数专业教材和书籍的默认语⾔都是Java或者C/C+ +,O’REILLY家倒是出了⼀本叫做《数据结构与算法javascript描述》的书,但不得不说,不知道是作者吃了shit还是译者根本就没校对,满书的⼩错误,这就像那种⽆穷⽆尽的⼩bug⼀样,简直就是让⼈有种嘴⾥塞满了shit的感觉,吐也不是咽下去也不是。
对于⼀个前端来说,尤其是笔试⾯试的时候,算法⽅⾯考的其实不难(⼗⼤排序算法或是和⼗⼤排序算法同等难度的),但就是之前没⽤javascript实现过或是没仔细看过相关算法的原理,导致写起来浪费很多时间。
所以撸⼀撸袖⼦决定⾃⼰查资料⾃⼰总结⼀篇博客等⽤到了直接看⾃⼰的博客就OK了,正所谓靠天靠地靠⼤⽜不如靠⾃⼰(¯(∞)¯)。
算法的由来:9世纪波斯数学家提出的:“al-Khowarizmi”就是下图这货(感觉重要数学元素提出者貌似都戴了顶⽩帽⼦),开个玩笑,阿拉伯⼈对于数学史的贡献还是值得⼈敬佩的。
正⽂排序算法说明(1)排序的定义:对⼀序列对象根据某个关键字进⾏排序;输⼊:n个数:a1,a2,a3,...,an 输出:n个数的排列:a1',a2',a3',...,an',使得a1'<=a2'<=a3'<=...<=an'。
大数据十大经典算法讲解大数据时代的到来使得数据处理任务变得更加庞大和复杂,因此需要高效的算法来处理这些数据。
下面将介绍大数据领域中使用最广泛的十大经典算法,并对其进行讲解。
1. MapReduce算法MapReduce是由Google提出的一种分布式计算模型,用于处理大规模数据。
它可以将一个大规模的计算任务划分为多个小的子任务,然后并行执行,最后将结果进行合并。
MapReduce算法提供了高可靠性和可扩展性,并且可以在大规模计算集群中进行部署。
2. PageRank算法PageRank算法是由Google提出的一种网页排名算法,用于衡量网页的重要性。
该算法基于图论和随机游走模型,通过计算网页的入链和出链数量来评估其权重,并使用迭代计算的方法来不断更新每个网页的权重。
PageRank算法在引擎中被广泛使用。
3. Apriori算法Apriori算法是用于发现关联规则的一种经典算法。
它通过扫描数据集中的频繁项集,然后利用频繁项集的定义进行逐层生成频繁项集的过程。
Apriori算法的核心思想是利用Apriori原理,即如果一个项集是频繁的,那么它的所有子集也一定是频繁的。
4. K-means算法K-means算法是一种聚类算法,用于将数据集划分为K个不相交的簇。
该算法基于数据点之间的欧氏距离进行簇的划分,通过迭代计算来更新簇的中心点,并将数据点分配给最近的中心点。
K-means算法是一种简单但有效的聚类算法,广泛用于数据挖掘和机器学习领域。
5.SVM算法SVM(支持向量机)算法是一种监督学习算法,用于解决分类和回归问题。
该算法基于二分类模型,通过寻找找到可以将不同类别的样本分隔开的最优超平面来进行分类。
SVM算法具有良好的泛化能力和鲁棒性,并且在处理大规模数据时也能够保持较高的性能。
6.LDA算法LDA(Latent Dirichlet Allocation)算法是一种主题模型算法,用于发现文档集合中隐藏的主题结构。
一、1946 蒙特卡洛方法[1946: John von Neumann, Stan Ulam, and Nick Metropolis, all at the Los Alamos Scientific Labor atory, cook up the Metropolis algorithm, also known as the Monte Carlo method.]1946年,美国拉斯阿莫斯国家实验室的三位科学家John von Neumann,Stan Ulam 和 Nick Metrop olis共同发明,被称为蒙特卡洛方法。
它的具体定义是:在广场上画一个边长一米的正方形,在正方形内部随意用粉笔画一个不规则的形状,现在要计算这个不规则图形的面积,怎么计算列?蒙特卡洛(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 program ming.]1947年,兰德公司的,Grorge Dantzig,发明了单纯形方法。
单纯形法,此后成为了线性规划学科的重要基石。
所谓线性规划,简单的说,就是给定一组线性(所有变量都是一次幂)约束条件(例如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 Numeri cal Analysis at the National Bureau of Standards, initiate the development of Krylov subspace iter ation 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 app roach to matrix computations.]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,并为人们所熟知。
六、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 of Elliott Brothers, Ltd., London, presents Quicksort.]1962年:伦敦的,托尼埃利奥特兄弟有限公司,霍尔提出了快速排序。
哈哈,恭喜你,终于看到了可能是你第一个比较熟悉的算法~。
快速排序算法作为排序算法中的经典算法,它被应用的影子随处可见。
快速排序算法最早由Tony Hoare爵士设计,它的基本思想是将待排序列分为两半,左边的一半总是―小的‖,右边的一半总是―大的‖,这一过程不断递归持续下去,直到整个序列有序。
说起这位Tony Hoare爵士,快速排序算法其实只是他不经意间的小小发现而已,他对于计算机贡献主要包括形式化方法理论,以及ALGOL60 编程语言的发明等,他也因这些成就获得1980 年图灵奖。
快速排序的平均时间复杂度仅仅为O(Nlog(N)),相比于普通选择排序和冒泡排序等而言,实在是历史性的创举。
八、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 ofBrighamYoungUniversity advance an integer relation detection algorithm.]1977年:Helaman Ferguson和伯明翰大学的Rodney Forcade,提出了Forcade检测算法的整数关系。
整数关系探测是个古老的问题,其历史甚至可以追溯到欧几里德的时代。
具体的说:给定—组实数X1,X2,...,Xn,是否存在不全为零的整数a1,a2,...an,使得:a1 x 1 +a2 x2 + . . . + a n xn =0?这一年BrighamYoung大学的Helaman Ferguson 和Rodney Forcade解决了这一问题。
该算法应用于―简化量子场论中的Feynman图的计算‖。
ok,它并不要你懂,了解即可。
:D。
十、1987 快速多极算法[1987: Leslie Greengard and Vladimir Rokhlin ofYaleUniversity invent the fast multipole algorithm.]1987年:Greengard,和耶鲁大学的Rokhlin发明了快速多极算法。
此快速多极算法用来计算―经由引力或静电力相互作用的N 个粒子运动的精确计算——例如银河系中的星体,或者蛋白质中的原子间的相互作用‖。
ok,了解即可。