来源:http://www.hengtaiboyuan.com 作者:恒泰博远 时间:2014-06-02
有一天,当我浏览书签交易我发现了一个有趣的帖子,被称为10算法主宰我们的世界由作者乔治Dvorsky这是试图解释和重要性的算法已经在我们的当今世界,哪些是最重要的为我们的文明。
现在,如果你学过的算法,可以来到你的头脑在阅读文章的第一件事就是“作者是否知道什么是算法? ”或者是“ Facebook的新闻提要是一种算法? ”因为如果Facebook的新闻提要是一种算法那么你可能最终几乎所有的算法进行分类。所以我要去尝试在这篇文章中解释什么是算法是,哪些是真正的10 (或者更多)的算法,统治我们的世界。
什么是算法?
通俗地说,一个算法是任何定义良好的计算过程,它
一些值,或值的集合,作为输入,并产生一定的价值,或一组值,如
输出。一个算法是这样的系统,改变了计算步骤的序列
输入到输出中。来源:托马斯· H. Cormen , Chales酒店E. Leiserson (2009年) ,算法导论第3版。
简单来说,它可以说是一种算法是步骤,其允许解决特定任务(是,不只是计算机使用的算法,人类也使用它们)的序列。现在,一个算法应该被认为是有效的三个重要特征:
它应该是有限的:如果你的算法永远不会结束,试图解决它的目的是要解决问题,那么它是无用的
它应该有良好定义的指示:该算法的每个步骤必须精确定义;说明书应当对每个案件进行明确规定。
它应该是有效的:该算法应该解决它被设计来解决这个问题。它应该能够证明该算法收敛只有一张纸和铅笔。
此外,它指出,算法不只是用在计算机科学,但有一个数学实体是非常重要的。事实上,第一个记录的数学算法,我们有日期从公元前1600年 - 巴比伦人开发最早的已知的算法来分解和寻找平方根。所以在这里,我们有提到过,它把算法作为计算实体后的第一个问题,但如果你把这个词的形式意义的真正排名前10位的算法,统治世界可以在一本书算术(另外可以发现,减法,产品,等等)。
但是让作为计算算法作为我们在这个岗位算法的定义,因此,问题仍然是:哪些是10算法统治世界?在这里,我已经把一个小名单,排名不分先后。
1 ,合并排序,快速排序和堆排序
http://rkandhal.com/wp-content/uploads/2013/10/sort-comparison.png
什么是最好的算法进行排序的元素?这要看你需要什么,这就是为什么我把三个常用的排序算法在同一个地方;也许你有偏爱的,但所有的人都同样重要。
合并排序算法是迄今为止,我们今天最重要的算法之一。它是使用分而治之的方法来解决一个问题,曾经是一个为O(n ^ 2 )的比较为基础的排序算法。它是在1945年发明了数学家约翰·冯·诺伊曼。
快速排序是一种不同的方法来排序的问题,它可以使用就地分割算法,是一种分而治之算法也是如此。这个算法的问题在于,不是一个稳定的排序,但是是用于排序基于RAM阵列真正有效。
最后,堆排序算法使用一个优先级队列,以减少在数据搜索的时间。这种算法也是就地算法,而不是稳定的排序。
这些算法是一个很大的改进,以前使用像冒泡排序等方法,事实上,正是得益于他们,今天我们有数据挖掘,人工智能,链接分析,大部分在世界上的计算工具,包括网页。
2,傅立叶变换和快速傅立叶变换
https://xkcd.com/26/
我们的整个数字世界使用这些简单但真正强大的算法,变换信号从时域到他们的频域,反之亦然。事实上,你看到这个帖子感谢这些算法。
互联网,你的无线网络,智能手机,手机,电脑,路由器,卫星,几乎一切都有一台电脑里面使用这些算法以这种或那种方式发挥作用。你不能得到一个学位,电子,计算机或通信,不研究这些重要的算法。
3, Dijkstra算法
https://www.cs.indiana.edu/ 〜 achauhan/Teaching/B403/LectureNotes/10-graphalgo.html
它是不是疯了说,因为它确实是不是因为这个算法不是互联网将无法正常工作,效率更高。该曲线图的搜索算法用于在不同应用中的问题可以被建模为一个图,你必须找到两个节点之间的最短路径。
今天,即使当我们要寻找最短路径的问题更好的解决方案, Dijkstra算法采用的依然是需要稳定系统。
4, RSA算法
因为它是今天,如果它不是为密码学和网络安全的网络不会被视为重要的。你可以认为“当然,在安全和国家安全局等情报机构的时代”或“你必须非常天真的以为你是安全的互联网” ;但是,人们需要感觉到他们是安全的,以花自己的钱。毕竟,你会在Web服务不是输入你的信用卡号码,如果你知道它是不是安全的。
和从密码学领域有一个算法,它仍然是最重要的世界1 : RSA算法。由RSA公司的创始人开发的,该算法使密码提供给大家的世界,并帮助塑造加密今天是如何工作的。 RSA算法是解决一个简单而又复杂的问题:如何共享独立的平台和最终用户之间的公共密钥,为了让加密(我认为,它并没有被完全解决,我认为我们需要更多的工作这个方向上)。
5,安全散列算法
这不正是一种算法,但一个家庭由NIST在美国开发的加密散列函数。但这个家族的算法是根本为世界的运作。从你的应用程序商店,您的电子邮件,您的防病毒,到浏览器,等等,所有的人都使用这些算法(在现实中,结果从他们的散列)来确定您是否已经下载你想要的东西,或者如果你一直是受害者一个人在中间攻击,或者一个网络钓鱼攻击。
6 。整数因子分解
这是巨资在计算领域中使用的数学算法。如果没有这个算法,加密会更不安全。该算法是一系列的用于获得的复合数的质因数分解成较小的非平凡因子的步骤。这被认为是一个FNP问题,这是对NP类使得这个问题真的很难解决的扩展。
许多密码协议是基于分解大整数复合的难度或相关的问题,例如, RSA问题。一个算法,有效地因素的任意整数会使基于RSA公钥加密不安全的。
量子计算的诞生是使它更容易解决这个问题,打开一个使用量子世界的属性,使系统安全的全新领域。
7,链接分析
http://www.open.ac.uk/researchprojects/diasporas/files/diasporas/imagecache/zoom/BBC-Urdu-Link-Analysis.jpg
在互联网时代,不同实体之间关系的分析是至关重要的。从搜索引擎和社交网络营销分析工具,每个人都在试图通过时间在网上找的真实结构。
链接分析可以说是最神话和混乱在一般公众的算法之一。问题是,有不同的方法来使链路分析和也有特点,使每个算法稍微不同(它允许对专利的算法),但是在它们的基部它们是相似的。
后面链接分析的想法很简单,你可以代表一个矩阵形式的图形使之成为一个本征值问题。这种特征值可以给你的图,每个节点的相对重要性的结构的一个很好的办法。该算法是由加布里埃尔·平斯基和弗朗西斯纳林于1976年开发的。
谁在使用这个算法?谷歌在它的网页排名, Facebook的时候它会显示您的新闻提要(这就是为什么Facebook的新闻提要是不是一个算法,但其中一个结果的原因) ,谷歌和Facebook的朋友的建议,对工作和联系人LinkedIn建议, Netflix和Hulu的电影,YouTube上的视频,等等。每个人都有不同的目标和不同的参数,但背后都有数学仍然是相同的。
最后,我想说,即使认为它看起来像谷歌是第一个这种类型的算法来工作,于1996年(谷歌的前两年)被称为“ RankDex ”,由李彦宏创建了一个小的搜索引擎公司,是已经在使用这种想法的网页排名。最后马西莫Marchiori , “ HyperSearch ”的创始人,使用的网页排名基于单页之间的关系的算法。 (两位创始人都提到了谷歌的专利) 。
8,比例积分微分算法
https://en.wikipedia.org/wiki/File:PID_en_updated_feedback.svg
你曾经使用过的飞机,汽车,卫星服务或手机网络?你是否曾经在一家工厂或看到一个机器人?如果是这样,那么你已经看到了该算法在行动。
基本上,这个算法使用一个控制回路反馈机制,以减少所需的输出信号和实际输出信号之间的误差。它被用来在任何你需要的信号处理,或者您需要一个电子系统采用自动化控制机械,液压或热系统。
你可以说,如果没有这个算法我们的现代文明也就不存在了。
9 。数据压缩算法
因此很难确定哪个是最重要的压缩算法,因为根据不同的应用,所使用的算法可以不同压缩为MP3和从JPEG到MPEG -2。但是,有一些东西,大家都知道,这些算法是非常重要的,几乎所有的结构。
在哪里可以,你可以找到他们,除了明显的压缩文件?此网页使用数据压缩将下载到您的电脑,视频游戏,视频,音乐,数据存储,云计算,数据库等,可以说,一切都使用数据压缩算法;它们有助于使系统更便宜,更高效。
10 ,随机数生成
https://xkcd.com/221/
今天,我们没有一个“真”随机数生成器,但我们有一些伪随机数生成器,就足够了。这些都是在大量的应用,从互联连接,密码学,安全散列算法,视频游戏,人工智能,优化,为的问题,财政等初始条件下使用
最后,我只想补充一点,这个列表应该被视为一种民意,而不是一个完整的清单,因为有一些算法,像机器学习,矩阵乘法,分类等,这是在我们的世界重要的,此处不再赘述领域。
本文链接:http://www.hengtaiboyuan.com/jsdt/content_81 转载请注明来自北京恒泰博远科技有限公司