真正统治世界的十大算法

算法对于我们今天生活十分重要,怎样宣扬也不会夸张。它们在虚拟世界中无处不在,从金融机构到交友网站。但是,相比于其他算法,其中有一些算法更大程度上改变并控制着我们的世界——本文列举了其中十种最为重要的算法。

在正式介绍算法内容之前,让我们来迅速复习一些基本内容。虽然,没有明确的定义,但是计算机科学家将算法描述为一个定义了操作顺序的规则集合。它们是一组顺序指令,用来告诉计算机怎样解决一个问题或者达到某种既定目标。认识算法的好方法,是将算法可视化为流程图。

 

1. Google Search 谷歌搜索

不久之前,搜索引擎成为了互联网时代的霸主。与搜索引擎一起崛起的还有谷歌和谷歌提出的PageRank算法


今天,在美国的核心搜索市场中,谷歌的市场占有率达到了66.7%,其次是微软(18.1%),雅虎(11.2%),Ask(2.6%),AOL(1.4%)。毋庸置疑,谷歌已经统治了搜索市场,而且我们中的很多人把谷歌作为使用互联网的主要途径。

PageRank 的工作依赖于两个组成部分,一是叫做“蜘蛛”或者“爬虫”的自动程序,另一部分是关键词索引及其 位置。这个算法通过计算某个网页的相关链接数量和链接质量,来大致计算这个网页的重要性。算法的基本思想是越重要的网页会有越多的链接指向它。这是一个基本的人气竞赛。除此之外,PageRank算法也考虑了一个网页中关键词的频率和出现位置,以及这个网页发布的时间。

 

2. Facebook  News Feed

虽然我们不愿承认,但是Facebook的新闻提要(NewsFeed)是我们最喜欢浪费时间的地方。除非你的个人偏好已经设置为展示所有事件并且按照时间顺序更新所有好友新闻,不然你看到的新闻是一个预处理之后的选择,这个预处理是由Facebook的算法为你量身选择某些新闻而展示。

为了决定哪些新闻的内容是最有意思的,这个算法会考虑很多因素,比如评论数,发表人(是的,有一个内容的“流行”人物排名,所谓的“流行”人物是与你互动最多的人),发表类型(比如照片、视频、状态、更新等等)。

 

3. OKCupid 情侣匹配

在线交友现在是一个价值20亿美元的产业。由于Match.com, eHarmony, and OKCupid等网站的发展,这个产业自从2008年以来每年扩大3.5%。分析家认为这个产业的加速发展在未来五年还将继续——情有可原:这是情侣遇见的有效方式。婚恋网站不仅仅造就了更多的成功婚姻,他们也擅长于根据个人不同的喜好和倾向,匹配潜在情侣。当然,这样的匹配完全是由算法完成的。

我们将以OKCupid为例,OKCupid是一个免费的婚恋网站,联合创始人之一是哈佛大学的数学家Christian Rudder。OKCupid采用一种绝对的分析方法促成约会,他们从用户那里尽力获取信息。OKCupid 的配对算法不仅仅是简单地匹配一些共同爱好,同时,每一个问题都被赋予了权重,用来衡量这个问题对于用户和他们潜在情侣的重要程度。这就是所谓的差异造就不凡——这是OKCupid成为最高效婚恋网站的原因之一。

 

4. NSA 数据采集,解读和加密

我们越来越多地被算法而不是被人观察。感谢Edward Snowden,我们知道了美国安全局(NSA)及其小伙伴已经暗中监控了上百万的无辜公民。近期披露的文件显示,已经有许多的监控项目被FiveEyes实施,FiveEyes是由美国、澳大利亚、加拿大、新西兰和英国共同组成的情报组织。它们已经监控了我们的移动电话、电子邮箱、网络摄像头图像和地理位置信息。同时,“它们”我指的是他们的算法,这其中有太多的数据,人力无法进行收集和解读。

有意思的是,NSA声称实际上他们并没有“采集”我们的数据。根据一份1982年的程序手册,“信息“采集”是指当信息被收集并被国防部情报机构在职责范围内使用”。同时“数据由电子系统采集是指信息采集并被转换为可理解的形式”。英国卫报的Bruce Schneier解释道:

“ 因此,假设你的朋友在家里有成千上万的书籍,根据NSA的解释,他并不“收集”图书。只有他真正在读的那些才是他“收集”的图书,他利用图书做其他事情时并不能认为他在“收集”图书。”

这会产生一个问题因为:

计算机算法与人们密切相关。当我们想到计算机算法正在监控我们并且分析我们的个人数据时,我们必须想想在算法背后的人。是不是有人正在看着我们的数据,事实上,他们能做的事情正是监视。

最后,最相关的还有美国国家安全局的Suite B 加密算法,这是一套功能强大的算法,用于加密、数据交换、数字签名和哈希。机构正是利用这一算法来保护分类以及未分类文件的。

 

5. 推荐算法

诸如比如 亚马逊和 Netflix 这样的网站,会记录你购买过的书籍或是你看过的电影,然后根据我们的爱好为我们推荐商品。

正如许多自动程序一样,这种二十一世纪独有的技术既有优点也有缺点。虽然这样的推荐有时候很有帮助,但是有时候也会偏离目标——特别是你为你的三岁女儿选购了一本儿童读物作为礼物之后。

与PageRank和Facebook的新闻提要一样,这样的算法正在造成所谓的“过滤器泡沫”,这是一种现象,用户与他们不感兴趣的信息隔离——有效地将用户通过意识形态的“泡沫”隔离起来。这导致了Eli Pariser提出的“信息决定论”,我们过去在网上浏览的兴趣决定了我们的未来。

 

6. Google AdWords

与之前的算法类似, Google, Facebook以及其他的网站跟踪你的行为、用词、搜索请求来推送相应广告。 Google’s AdWords——公司最主要的收入来源——正是以这样的模式进行预测的,同时Facebook也在尽力进行相关研究(你最后一次点击Facebook的广告是什么时候?)

 

7. 高频率的股票交易

很久之前,金融部门就开始使用算法来预测市场波动,但是他们在高频率的股票交易中的实践才刚刚开始。这样的高速交易涉及的算法,也叫做机器人,可以对订单在毫秒级做出判断。相反,一个人通常需要至少一秒才能对潜在的风险做出反应。因此,人们逐渐被排除在了实际交易的循环之外——一个全新的电子生态正在逐渐形成。

但是,又是这些算法会造成错误。Leo Hickman解释道:

比如:2010年五月六日的“闪电崩盘”,当时道琼斯指数在几分钟内平均下跌了1000点,而在二十分钟之后市场才出现反弹。这样的大幅直线下跌到目前为止也没能得到完整解释,但是大部分经济学家将齐归咎于“竟次”。“竟次”的罪魁祸首是为了达到高频交易而大规模使用的量化交易算法。Scott Patterson,华尔街日报的记着和《The Quants》的作者,将在交易场地使用这些算法比作飞机的自动驾驶。今天,大部分的交易是由算法自动完成的,但是当情况出现不同时,比如发生闪电崩盘时,应当有人工介入。

8. MP3 压缩

压缩数据算法是电子世界不可磨灭的重要一员。我们希望更快地接收媒体数据,同时希望节约硬盘空间。因此,人们设计了很多方法来压缩和传送数据。

比如,在1991年思科系统研发了CRTP协议。1987年,德国研究者发明了今天广泛使用的MP3格式,从而将音频的大小减少到原始大小的十分之一。这一压缩格式导致了音乐产业的革命(影响有好有坏)。

 

9. 预测分析软件

目前这一技术并没有主宰我们的世界,但是它将很快主宰世界。越来越多的警察机构正在使用一种预测分析技术——一种让人想起电影《少数派报告》的新工具。

在2010年,据说利用IBM的预测分析软件(叫做CRUSH,全称 Criminal Reduction Utilizing Statistical History),2006年以来孟菲斯市的警察局减少了超过30%的恶性案件,其中包括减少了15%的暴力犯罪。同时,在波兰、以色列以及英国的城市也在关注这一技术。现在,洛杉矶、圣克鲁斯、查尔斯顿等也开始了试点。

这一技术结合了数据采集、统计分析,当然还有前沿的算法。它使得警察可以评估城市的犯罪特点,并且预告可能的犯罪“热点”,从而“积极地配置资源和分配人手,从而提高人力物力的使用效率,提高公众安全”。

未来,这个系统可能会大规模替代分析家的工作。犯罪行为可以被精确的算法所追踪,这些算法监控了互联网行为、GPS,个人电子设备,生物特征和其他现实中的通信方式。越来越多的无人机会用来追踪潜在罪犯,通过分析他们的肢体动作和其他的可视化线索,来预测他们的意图。

 

10. 调音(Auto-Tune)

最后,仅供娱乐,现在调音器由算法完成。无论是歌声或是乐器的声音,这些设备都能通过一组特定规则,略微修改音高,让音高达到最接近的准确半音上。有趣的是,这种技术最初由Exxon’s Any Hildebrand 用于处理地震数据。

美国女歌手Cher的《Believe》,被认为是第一首使用调音的流行歌曲。

 

什么是算法?

直白地说,算法就是任何明确定义的计算过程,它接收一些值或集合作为输入,并产生一些值或集合作为输出。这样,算法就是将输入转换为输出的一系列计算过程。来源:Thomas H. Cormen, Chales E. Leiserson (2009), 《算法导论第三版》。**

简而言之,我们可以说算法就是用来解决一个特定任务的一系列步骤(是的,不止计算机在使用算法,人类也同样如此)。目前,一个有效的算法应该含有三个重要特性:

1. 它必须是有限的:如果你设计的算法永无休止地尝试解决问题,那么它是无用的。
2. 它必须具备明确定义的指令:算法的每一步都必须准确定义,在任何场景下指令都应当没有歧义。
3. 它必须是有效的:一个算法被设计用以解决某个问题,那么它就应当能解决这个问题,并且仅仅使用纸和笔就能证明该算法是收敛的。

还有一个要点需要指出,算法不仅仅在计算机科学中使用,同时也存在于数学领域中。事实上,首个被记载的数学算法要追溯到公元前1600年,古巴比伦人开发了已知最早的算法,用作因式分解和计算平方根。这里,我们回答了前面所提到的那篇文章中的第一个问题,它认为算法是计算机范畴的实体,但如果你知晓算法这个词的真正内涵的话,真正统治世界的十大算法也能在数学书籍中找到(加法、减法、乘积等等)。

不过在这篇文章中,让我们将算法的定义限定在计算机算法上,所以剩下的问题是:哪十个算法统治了世界?在此我整理了一个小型列表,排名不分先后。

1. 归并排序,快速排序和堆排序



哪个排序算法最好?这取决于你的需求,这也是为什么我要将这三个使用频率较高的排序算法置于一处的原因。可能你比较偏爱其中一个,但它们都是同等重要的。

归并排序算法是目前为止我们拥有的最重要的算法之一。它是一种基于比较的排序算法,使用分治法解决那些原本复杂度为O(N^2)的问题。归并排序是由数学家John von Neumann于1945年发明的。

快速排序是解决排序问题的另一种途径,它使用就地分解算法,同时它也是一种分治算法。这个算法的问题在于它是不稳定的排序算法,但它在基于内存的数组排序上确实非常高效。

最后,堆排序算法使用一个优先队列降低数据的查找时间,它也是一种就地排序算法,同样也是不稳定的排序算法。

相较于曾经使用的其他排序算法(如冒泡排序),上述算法带来了显著的改进。事实上,多亏了它们,今天我们才有了数据挖掘、人工智能、链接分析,以及世界上大部分的计算机工具,也包括网络在内。

(推荐阅读:《视觉直观感受 7 种常用的排序算法》)

2. 傅立叶变换与快速傅立叶变换



整个数字世界都在使用这些简单而又强大的算法,将信号从频域转换为时域,反之亦然。事实上,正是归功于这些算法,你才能看到这篇文章。

互联网、你的WIFI、智能手机、电话、计算机、路由器、卫星,几乎所有内置计算机的东西都会以各种方式使用这些算法实现各自的功能。如果你没有学习这些重要的算法,你将无法获得电子、计算机或通信方面的学位。

编注:关于傅里叶变换,可以看看韩昊写的这篇文章《通俗讲解傅里叶变换【完整版】》

3. Dijkstra 算法



毫无不夸张地说,如果没有这个算法,当今互联网将无法有效工作。这是一种图搜索算法,它被广泛应用在能够建模为图的问题中,用以找出两个节点之间的最短路径。

目前,即便我们已经拥有了解决最短路径问题的更好方法,Dijkstra 算法依然在那些重视稳定性的系统中得到应用。

4. RSA算法

如果没有信息加密和网络安全,互联网不会像现在那么重要。你可以认为“安全问题理所当然应该是美国国家安全局和其他情报机构的事情”或“你认为你身处在互联网是安全的,这太天真了”。但是,人们需要在他们花钱时保有安全感,毕竟你不会在网络服务器上输入你的信用卡号,如果你知道它是不安全的话。

在信息加密领域,有一个算法始终是世界上最重要的算法之一,它就是RSA算法。这个算法是由RSA公司的创始人所建立的,它使信息加密惠及千家万户,奠定了当今信息加密的运作基础。RSA算法用来解决一个简单而又复杂的问题:怎样在不同平台和终端用户之间共享公钥,继而实现信息加密(我想说明一下这个问题还没完全解决,我想我们需要基于这个方向做更多工作)。

5. 安全哈希算法

准确地说,它不能称之为是算法,它是美国国家标准暨技术学会定义的加密散列函数族中的一员,但是这族算法对整个世界的运作至关重要。从你的应用商店,你的邮件,你的杀毒软件,到你的浏览器等等,所有这些都在使用安全哈希算法,它能判断你是否下载了你想要的东西,也能判断你是否是中间人攻击或网络钓鱼攻击的受害者。

(推荐阅读:《加盐密码哈希:如何正确使用》)

6. 整数因式分解

这是在计算机领域被大量使用的数学算法,没有这个算法,信息加密会更不安全。该算法定义了一系列步骤,得到将一合数分解为更小因子的质数分解式。这被认为是一种FNP问题,它是NP分类问题的延伸,极其难以解决。

许多加密协议(如RSA算法)都基于这样一个原理:对大的合数作因式分解是非常困难的。如果一个算法能够快速地对任意整数进行因式分解,RSA的公钥加密体系就会失去其安全性。

量子计算的诞生使我们能够更容易地解决这类问题,同时它也打开了一个全新的领域,使得我们能够利用量子世界中的特性来保证系统安全。

7. 链接分析



在互联网时代,分析不同实体间的关系是相当重要的。从搜索引擎,社交网络,到营销分析工具,每个人都在不停寻找互联网的真正结构。

有证据显示,链接分析是公众心目中伴随着最多谬见和误解的算法之一。这里的问题在于,有很多不同的方式可以进行链接分析,也存在很多特性使这些算法看起来有细微的区别(这些区别允许该算法独立申请专利),但它们本质上是类似的。

链接分析背后的理念非常简单,以矩阵形式描绘出一张图,将问题转换为特征值问题。特征值是一种很好的渠道,它有助于展现图的结构以及每个节点的相对重要性。该算法是由Gabriel Pinski和Francis Narin于1976年建立的。

谁在使用这个算法?Google的Page Rank算法,Facebook向你展示的新闻提要(这就是为什么Facebook的新闻提要不是算法,只是使用算法的结果而已),Google+和Facebook的好友推荐,LinkedIn的工作和联系人推荐,Netflix和Hulu的电影,YouTuBe的视频,等等。虽然每个都有不同的目标和参数,但它们背后的数学理念是相同的。

最后,我想说明一点,尽管看上去Google是第一家使用这类算法的公司,然而在1996年(Google之前两年),Robin Li(李彦宏)所建立的一个小型搜索引擎“RankDex”就已经在它的网页排名机制中使用了这项理念。后来,HyperSearch的创始人Massimo Marchiori基于各网页之间的关系使用了另一种网页排名算法。(Google在它的专利中提到了这两位创始者)

(推荐阅读:《张洋:浅析PageRank算法

8. 比例积分微分算法



你是否曾经用过飞机、汽车、卫星服务或手机网络?你是否曾经在工厂工作或是看见过机器人?如果回答是肯定的,那么你应该已经见识过这个算法了。

大体上,这个算法使用一种控制回路反馈机制,将期望输出信号和实际输出信号之间的错误最小化。无论何处,只要你需要进行信号处理,或者你需要一套电子系统,用来自动化控制机械、液压或热力系统,这个算法都会有用武之地。

可以这样说,如果没有这个算法,现代文明将不复存在。

9. 数据压缩算法

要判断哪种数据压缩算法最为重要是很困难的,因为它取决于不同的应用环境。它们可以应用在zip和mp3上,也可以应用在JPEG和MPEG-2上。但众所周知,在所有结构中这些算法都极其重要。

除了显而易见的zip文件,在哪我们能够找到这些算法?这张网页就进行了数据压缩并被下载到你本地,同时我们还能在电子游戏、视频、音乐、数据存储、云计算、数据库等等地方找到这些算法。可以说,数据压缩算法处处可见,它们使系统成本更低、效率更高。

10. 随机数生成

1_WBYODRJUgH8h_QEPnaWS-w

现在我们还没有一个“真正的”随机数生成器,但我们已经有了一些伪随机数生成器,这够用了。随机数生成器的用途非常广泛,从互联联络、数据加密、安全哈希算法、电子游戏、人工智能、优化分析,到问题的初始条件、金融等等,都有它们的身影。

(推荐阅读:《当随机不够随机:一个在线扑克游戏的教训》

最后,我想强调一下,上面这个列表经供参考,它并不完整。因为在机器学习、矩阵乘法、分类化等领域也有一些算法,它们对我们的世界同样重要,但在这里还没有提到。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值