统治世界的十大算法

全世界有3.14 % 的人已经关注了

数据与算法之美


软件正在统治世界。而软件的核心则是算法。算法千千万万,又有哪些算法属于“皇冠上的珍珠”呢?Marcos Otero 给出了他的看法。


什么是算法?


通俗而言,算法是一个定义明确的计算过程,可以一些值或一组值作为输入并产生一些值或一组值作为输出。因此算法就是将输入转为输出的一系列计算步骤。

Thomas H. Cormen,Chales E. Leiserson,算法入门第三版


简而言之,算法就是可完成特定任务的一系列步骤,它应该具备三大特征:


1、有限

2、指令明确

3、有效


以下是 Marcos Otero 推荐的十大算法:


1、归并排序、快速排序及堆积排序


640?wx_fmt=png

最好的排序算法跟需求密切相关,很难评判。但是从使用上说,这三种的使用频率更高。


归并排序由冯•诺依曼于 1945 年发明。这是一种基于比较的排序算法,采用分而治之的办法解决问题,其阶是 O(n^2)。


快速排序可采用原地分割方法,也可采用分而治之算法。这不是一种稳定的排序算法,但对于基于 RAM(内存)的数组排序来说非常有效。


堆排序采用优先级队列来减少数据中的搜索时间。该算法也是原地算法,并非稳定排序。


这些排序算法相对于以前的冒泡排序算法等有了巨大改进,实际上我们今天的数据挖掘、人工智能、链接分析及包括 web 在内的大多数计算工具都要感谢它们。


2、傅里叶变换与快速傅里叶变换


640?wx_fmt=jpeg

我们的整个数字世界都使用这两个简单但非常强大的算法,其作用是将信号从时域转为频域或者反之。实际上,你看得到这篇文章得感谢这些算法。


互联网、你的 WiFi、智能手机、电话、计算机、路由器、卫星,几乎所有内置有计算机的东西都会以各种方式使用这两算法。如果不研究这些算法,你就拿不到电子、计算或通信方面的学位。轻松掌握算法精髓,推荐阅读《啊哈!算法》。


3、迪杰斯特拉(Dijkstra)算法


640?wx_fmt=jpeg


Dijkstra是一种图谱搜索算法。许多问题都可以建模为图谱,然后利用 Dijkstra 寻找两个节点之间的最短路径。如果没有 Dijkstra 算法,互联网的运营效率必将大大降低。虽然今天我们已经有了更好的寻找最短路径的解决方案,但出于稳定性的要求,Dijkstra 算法仍然被很多系统使用。


4、RSA算法


如果没有密码术和网络安全,互联网就不会像今天一样重要,因为电子商务和电子交易需要这些技术来确保交易安全。而RSA算法是最重要的密码学算法之一。该算法由同名公司的创始人(Ron Rivest、Adi Shamir 和 Leonard Adleman)开发,它让密码学普及到了千家万户并奠定了密码术的应用基础。


RSA 要解决的问题既简单又复杂:如何在独立平台与最终用户之间共享公钥。其解决方案是加密。RSA 加密的基础是一个十分简单的数论事实:将两个大素数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。但在分布式计算和量子计算机理论日趋成熟的今天,RSA 加密安全性受到了挑战。


5、安全哈希算法(SHA)


这个实际上并不算是算法,而是由美国国家标准技术研究所开发的一系列密码杂凑函数。但是这系列函数是全世界运作的基石。应用商店,电子邮件、反病毒、浏览器等在使用SHA系列函数,SHA 函数可用来确定下载的东西是否自己想要的东西,还是说遭遇了中间人攻击或钓鱼攻击。


6、整数因子分解


这是一个在计算领域使用频繁的数学算法。如果没有这一算法,密码术就会变得不安全得多。整数因子分解是用来将一个合数分解成一系列素因子的一系列步骤。整数因子分解可被视为是 FNP 问题(FNP 是难以解决的典型 NP 问题的扩展)。


许多密码协议均基于难以分解的大型合数或相关问题。比方说前面提到的 RSA 问题。如果有算法能够有效分解任意数字,那么就会使得基于 RSA 的公钥密码系统陷入不安全的境地。


而量子计算的诞生则令此问题的解决变得容易,从而也打开了一个全新的领域,可利用量子世界的属性来令系统更加安全。


7、链接分析


640?wx_fmt=jpeg

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


链接分析无疑是公众对算法的最大困惑与迷思之一。其问题在于进行链接分析有不同的方式,而增加一些特征就会令每一算法略有不同(从而使得算法受到专利保护),但基本上这些算法都是类似的。


链接分析算法首先由 Gabriel Pinski 和 Francis Narin 在 1976 年发明。其背后的思路很简单,即把图谱以矩阵的形式表示,从而转为特征值问题,而特征值有助于了解图谱结构及每个节点的相对重要性。


Google 的 PageRank,Facebook 展示新闻源,Google+,Facebook 朋友推荐,LinkedIn 工作及联系人推荐,Netflix 与 Hulu 的电影推荐,YouTube 视频推荐等均使用了链接分析算法。虽然每个都有不同的目标和参数,但其背后的数学是一样的。


尽管 Google 似乎是利用此类算法的第一家公司,但是实际上百度创始人李彦宏在 Google 诞生 2 两年前做的搜索引擎“RankDex”已经利用这种思路来进行搜索排名了。


8、比例积分微分算法


如果你用过飞机、汽车、微型服务或手机网络,如果你在工厂呆过或者见过机器人,那么你已经见识过这一PID算法的作用了。


该算法利用了控制回路机制来让期望输出信号与实际输出信号之间的错误降到最小。只要需要信号处理或需要电子系统来控制自动化的机械、水力或热力系统就要用到它。


因此可以说如果没有这一算法,人类的现代文明将不复存在。像小说一样有趣的算法入门书,推荐阅读《算法图解》。


9、数据压缩算法


数据压缩算法无疑是非常重要的,因为几乎在所有的结构中都要用到。除了最明显的压缩文档以外,网页下载时也会压缩,视频游戏、视频、音乐、数据存储、云计算、数据库等等也都要使用压缩算法。


可以说几乎所有应用都要使用压缩算法。压缩算法令系统更有效成本更低,但是要想确定哪一个最重要却很困难,因为应用不同,使用的压缩算法从 zip 到 mp3、JPEG 或 MPEG-2 各异。


10、随机数生成算法


很多应用都需要随机数。像 interlink connection,密码系统、视频游戏、人工智能、优化、问题的初始条件,金融等都需要生成随机数。但实际上目前我们并没有“真正”的随机数生成器,尽管有一些伪随机数生成器也是非常有效的。


via:程序猿那些事


640?wx_fmt=png精品课程推荐:

640?wx_fmt=png

640?wx_fmt=png

选购数学科普正版读物

严选“数学思维好物”

送给孩子的益智礼物   |   办公室神器

算法工程师成长阅读   |   居家高科技

理工科男女实用型礼物精选   

640?wx_fmt=png


640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=jpeg

640?wx_fmt=jpeg


数据与算法之美

用数据解决不可能


640?wx_fmt=jpeg



长按扫码关注


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/302720.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hosting in .NET Core

在.NET Core中,Host负责应用程序的启动和生命周期管理。除此之外,在Host中还可以设置日志(Logging)、配置(Configuration)和依赖关系注入(Dependency Injection)等。Host将一个常规的控制台应用程序(Console Application)变成了一个可以长时间运行的服务…

如何用大数据找女朋友?

全世界有3.14 % 的人已经关注了数据与算法之美导读找女朋友不仅需要好眼力,还需要一些技术含量。比如眼下正热的大数据,可以认真钻研,用数据分析来实现自己的“脱单计划”。小猿25岁,单身男,热衷大数据,并决…

ASP.NET Core 单元测试:如何 Mock HttpContext.Features.Get()

点击上方蓝字关注“汪宇杰博客”导语在 ASP.NET Core 里&#xff0c;如果你想单元测试 HttpContext.Features.Get<SomeType>()&#xff0c;这个技巧一定不要错过。问题我有个 Error 页面&#xff0c;需要取得异常的详细信息。我使用 HttpContext.Features.Get<IExcept…

mini api

大部分主流语言都支持web框架&#xff0c;并且实现起来相对轻便&#xff0c;简捷&#xff0c;比如&#xff1a;go的gin包package main import "github.com/gin-gonic/gin" func main() {r : gin.Default()r.GET("/ping", func(c *gin.Context) {c.JSON(200…

edge robert matlab,哪位熟悉matlab的大神路过瞄一眼哈

cxfx(believe truth believe me)UID240430帖子100精华积分1755蛋蛋币1755 枚威望0BT积分0阅读权限60性别男在线时间125 小时注册时间2013-3-27鸵鸟蛋主楼大中小发表于 2013-5-13 21:30 只看该作者哪位熟悉matlab的大神路过瞄一眼哈求大神指点迷津那&#xff01;谁来帮着看一下这…

php 图片 3d旋转图片,html5实现图片的3D旋转效果

我们先来看一下实现效果&#xff1a;(学习视频分享&#xff1a;html视频教程)H5旋转3D相册&#xff0c;鼠标放置暂停&#xff0c;图片灰度级为0&#xff0c;有放大效果。该实例运用H5和CSS3动画效果&#xff0c;未用javascript。提高了本人对CSS3 新属性的了解及掌握。完整代码…

数据这么多,且看R语言怎么处理!

随着科技的不断进步&#xff0c;数据处理量的不断增大&#xff0c;对数据进行处理、分析、统计建模、数据挖掘以及可视化的重要性日渐突出。如果说有一门简单易学、通俗易懂并且集上述功能为一体的编程语言让科研人员从中解脱出来&#xff0c;R语言当仁不让。作为一种统计分析软…

乘风破浪,.Net Core遇见Dapr,为云原生而生的分布式应用运行时

Dapr是一个由微软主导的云原生开源项目&#xff0c;国内云计算巨头阿里云也积极参与其中&#xff0c;2019年10月首次发布&#xff0c;到今年2月正式发布V1.0版本。在不到一年半的时间内&#xff0c;github star数达到了1.2万&#xff0c;超过同期的kubernetes、istio、knative等…

催人泪下!一个程序员的悲惨故事

全世界有3.14 % 的人已经关注了数据与算法之美编辑&#xff1a;大数据二狗如果你喜欢这篇文章&#xff0c;就把它发给朋友看吧~精品课程推荐&#xff1a;选购数学科普正版读物严选“数学思维好物”送给孩子的益智礼物 | 办公室神器算法工程师成长阅读 | 居家高科技理工…

双十一,单身狗除了买买买,还能做什么?

躲得过618&#xff0c;躲得过1024终究躲不过双十一小天相信&#xff0c;肯定有很多的小伙伴正磨刀霍霍对准自己的手这个节日小天陪你们买买买&#xff01;11月6~13日超级数学建模携手网易云课堂“超级充电节”为大家带来多重惊喜&#xff0c;福利享不停&#xff01;趁此机会赶紧…

将 SharePoint 开发与其他形式的开发进行比较

从三个视点检查 SharePoint 开发很有用&#xff1a; 为 .NET Framework 构建可扩展的应用程序 构建数据库应用程序 构建传统的富客户端应用程序将 SharePoint 应用程序与可扩展的 .NET Web 应用程序进行比较 您可以从开发人员的角度检查 SharePoint 开发&#xff0c;该开发人员…

Visual Studio 2022这些重大更新,影响每一位.NET开发者!

难得五一长假&#xff0c;蹲家里盘点了一下这2年.NET的发展&#xff0c;可谓日新月异&#xff0c;重现辉煌&#xff0c;各种重磅更新接踵而至&#xff1a;1 .NET Core3.1各种最受欢迎、性能排行等榜单霸榜&#xff0c;3个月增加100w的关注者&#xff1b;2 .NET5让.NET Framewor…

影响计算机算法世界的十位大师

全世界有3.14 % 的人已经关注了数据与算法之美1、伟大的智者——Don E.Knuth&#xff0c;中文名&#xff1a;高德纳(1938-)算法和程序设计技术的先驱者。Oh,God!一些国外网站这样评价他。一般说来&#xff0c;不知道此人的程序员是不可原谅的。其经典著作《计算机程序设计艺术》…

【翻译】WPF中的数据绑定表达式

有很多文章讨论绑定的概念&#xff0c;并讲解如何使用StaticResources和DynamicResources绑定属性。这些概念使用WPF提供的数据绑定表达式。在本文中&#xff0c;让我们研究WPF提供的不同类型的数据绑定表达式。介绍数据绑定是一种强大的技术&#xff0c;它允许数据在UI元素和业…

12个关键词,告诉你到底什么是机器学习

全世界只有3.14 % 的人关注了数据与算法之美编者按&#xff1a;随着人工智能(AI)技术对各行各业有越来越深入的影响&#xff0c;我们也更多地在新闻或报告中听到“机器学习”、“深度学习”、“增强学习”、“神经网络”等词汇&#xff0c;对于非专业人士来说略为玄幻。这篇文章…

MFC多语言实现方法

2019独角兽企业重金招聘Python工程师标准>>> 一、字符放在DLL资源文件中&#xff0c;切换资源模块(程序默认使用exe模块资源)。 实现要点&#xff1a; 新建一个只包含资源的DLL。通过函数AfxSetResourceHandle设置资源模块。 示意代码为&#xff1a; AfxSetResource…

oracle dbfile数,通过案例学调优之--Oracle参数(db_file_multiblock_read_count)

通过案例学调优之--Oracle参数(db_file_multiblock_read_count)应用环境&#xff1a;操作系统&#xff1a; RedHat EL55Oracle&#xff1a; Oracle 10gR2Oracle DB_FILE_MULTIBLOCK_READ_COUNT是Oracle比较重要的一个全局性参数&#xff0c;可以影响系统级别及sessioin级别。…

转行程序员后,我开始后悔没做这件事

全世界有3.14 % 的人已经关注了数据与算法之美程序 数据结构 算法 ——图灵奖得主&#xff0c;计算机科学家N.Wirth(沃斯)作为程序员&#xff0c;我们做机器学习也好&#xff0c;做python开发也好&#xff0c;java开发也好。有一种对所有程序员无一例外的刚需 —— 算法与数据…

工业互联网的两种极端想法和两点反思

目 录1. 概述2. 两种极端想法3. 两点反思1. 概述最近走访了很多企业&#xff0c;涉及到的行业包括&#xff1a;军工、特钢、有色、加工制造&#xff08;海洋钻井平台&#xff09;、建材、纺织等&#xff0c;在与不同的行业交流的过程中&#xff0c;我发现…

兵马未至,数据先行,且看如何进行数据挖掘!

从数据中抽取信息从信息中挖掘知识随着大数据时代的到来&#xff0c;数据挖掘的重要性越发显著。可谓是兵马未至&#xff0c;数据先行。所谓数据挖掘&#xff0c;一般是指从大型数据库中将隐藏的预测信息抽取出来的过程&#xff0c;而更为精确的解释就是“从数据中挖掘知识”。…