统治世界的十大算法如果没有这些算法当今互联网将无法有效工作Word文档下载推荐.docx

上传人:b****1 文档编号:14586545 上传时间:2022-10-23 格式:DOCX 页数:5 大小:23.51KB
下载 相关 举报
统治世界的十大算法如果没有这些算法当今互联网将无法有效工作Word文档下载推荐.docx_第1页
第1页 / 共5页
统治世界的十大算法如果没有这些算法当今互联网将无法有效工作Word文档下载推荐.docx_第2页
第2页 / 共5页
统治世界的十大算法如果没有这些算法当今互联网将无法有效工作Word文档下载推荐.docx_第3页
第3页 / 共5页
统治世界的十大算法如果没有这些算法当今互联网将无法有效工作Word文档下载推荐.docx_第4页
第4页 / 共5页
统治世界的十大算法如果没有这些算法当今互联网将无法有效工作Word文档下载推荐.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

统治世界的十大算法如果没有这些算法当今互联网将无法有效工作Word文档下载推荐.docx

《统治世界的十大算法如果没有这些算法当今互联网将无法有效工作Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《统治世界的十大算法如果没有这些算法当今互联网将无法有效工作Word文档下载推荐.docx(5页珍藏版)》请在冰豆网上搜索。

统治世界的十大算法如果没有这些算法当今互联网将无法有效工作Word文档下载推荐.docx

那么何为算法呢?

直白地说,就是任何明确定义的计算过程,它接收一些值或集合作为输入,并产生一些值或集合作为输出。

这样,算法就是将输入转换为输出的一系列计算过程。

虽然算法的定义表达总是要借助一些或简或繁的公式或数学描述,一般人理解起来可能会有些困难。

但是如果我们把算法映射到鲜活的生活场景中,就会发现算法其实并没有那么复杂。

尤其是当飞速发展的互联网全方位融入我们的生活之后,许多看似复杂的算法,正在以非常直接的方式迅速改变着我们的生活方式。

在Reddit网站上,作者GeorgeDvorsky试图解释算法之于当今世界的重要性,以及哪些算法对人类文明最为重要。

如果Facebook的新闻提要也可以归为一种算法的话,那么最终就可以把几乎所有的东西都归类为算法,也就是说自然界中一切的现象,都可以用算法解释。

当下,软件正在统治世界。

而软件的核心则是算法。

算法千千万万,那么又有哪些算法统治了世界呢?

发明算法的大师们,他们也是普通人,他们发明的算法看似高深莫测,其实我们每天都有接触到。

下面就让我们一起学习下吧!

1.Dijkstra算法筛出最短路径火灾是城市中较为频繁的灾害,造成的损失是巨大的。

消防部门如何迅速调动消防救援力量到达事故地点并及时扑灭火灾,这就涉及到调集路径选取的问题。

地理信息系统中的Dijkstra最短路径算法就可以很好地解决这个问题。

自驾游之中途迷路,作为司机,那份焦灼是难以用语言形容的。

对于方向感很差的,之前每次出门都会提前,为走错路预留出时间。

但其实不必,在做路线规划时,使用了Dijkstra算法就能寻找到最短路径。

那么何为Dijkstra算法呢?

Dijkstra算法是典型的最短路径路由算法,用于计算一个节点到其他所有节点的最短路径,这也是一个计算机领域图搜索计算的一个经典算法。

或许在生活中,经常会碰到针对某一个问题,在众多的限制条件下,如何去寻找一个最优解?

可能大家想到了很多诸如线性规划,动态规划这些经典策略,当然有的问题我们可以用贪心来寻求整体最优解,在图论中一个典型的贪心法求最优解的例子就莫过于最短路径的问题。

毫无不夸张地说,如果没有这个算法,当今互联网将无法有效工作。

这是一种图搜索算法,它被广泛应用在能够建模为图的问题中,用以找出两个节点之间的最短路径。

Dijkstra算法的基本思想可以理解为:

从起点开始,把相邻可选路段的时长加起来。

遍历所有路径组合之后,就可以耗时最短的路径。

由于计算机的应用,这种算法已经被广泛应用于电子地图及导航产品中。

而这些产品的出现,确实颠覆了我们过去那种一出门就手拿地图,祈祷不堵车的出行习惯。

2.傅立叶变换算法听声音破解电话号码就像大学生从360总裁周鸿祎的视频中破解了周鸿祎的手机号码,电话听音破密码诈骗也被炒得沸沸扬扬。

不少人都觉得太过神话,其实很简单,用理性的声音解释一下这其中的奥秘,说白了就是离散傅立叶变换(DFT)。

傅里叶变换(Fouriertransform)是一种线性的积分变换。

因其基本思想首先由法国学者傅里叶系统地提出,所以以其名字来命名以示纪念。

“离散傅里叶变换(DiscreteFourierTransform,缩写为DFT)”是傅里叶变换算法中的一种,是指傅里叶变换在时域和频域上都以离散的形式呈现。

原始信号离散化的过程其实就是以一定的周期对原始信号进行采样的过程。

但常规的傅立叶变换算法并不适用于嵌入式控制系统,原因是运算量太大(涉及到复数运算),比如离散的傅立叶变换等同于用序列Y(n×

1列矢量)乘以n×

n矩阵Fn,需要n×

n次乘法。

若n=1024,则是104,8576次乘法运算。

这又是一个什么概念呢?

如果你选用的CPU单周期指令为25ns,单周期也可以完成一次乘法运算,那么要计算1024点的傅立叶变换则需要26.2144ms,这还不包括加法或其它运算,对于大多数实时系统,这个处理时间实在太长。

因为离散傅立叶变换计算量相当大,有很多提高效率的算法理论,其中应用最广泛的还是快速傅立叶变换(FFT)。

利用快速傅里叶变换FFT将图像信号从空间域转换到频域进行分析使快速卷积、目标识别等许多算法易于实现;

然后根据图像信号的灰度结构特征和频谱分布用Butterworth带通滤波器和二维维纳滤波器进行滤波处理去除图像信号中的低频干扰和噪声信号;

再利用傅里叶反变换将信号还原。

结果显示处理后的模拟远程高空卫星照片轮廓清晰可见。

3.RSA算法数据安全传输电子商务是建立在一个开放式的Internet上,维护商业机密是电子商务获得全面推广应用的重要保障。

保证电子商务各方信息的完整性是电子商务应用的基础。

数字签名技术可以实现数据的完整性、身份认证性、不可抵赖性。

贸易双方的如何确定要进行交易的贸易方正是进行交易所期望的贸易方这一问题也可通过数字签名来实现。

而数字签名技术本身的安全性则由密码技术来保证。

公钥密码体制的思想是在1976年由Diffie和Hellman提出。

公钥密码体制的想法是:

可以找到一种密码体制,使由给定的ek来求dk是计算不可行的。

如果可以的话,加密规则ek是一个公钥,可以在一个目录中发布(这就是公钥体制名称的由来)。

1977年由Rivest、Shamir和Adleman发明的著名的RSA密码体制就是公钥体制的一种典型代表。

其优点是甲可以利用公钥加密规则ek发出一条加密的消息给乙,而不需要预先共享密钥的通信。

乙将是唯一能够利用dk(私钥)来对密文解密的人。

乙可以让任何人发布他的公钥,任何人用公钥将数据加密后在网络中传输,即使在传输过程中被别人截获同时这人也拥有乙的公钥,也无法利用这些资料来破译加密数据:

而只有乙通过私钥才能顺利解密密文。

这样便能实现数据的安全传输。

RSA是第一个既能用于数据加密也能用于数字签名的算法。

它易于理解和操作,也很流行。

如果没有信息加密和网络安全,互联网不会像现在那么重要。

你可以认为“安全问题理所当然应该是美国国家安全局和其他情报机构的事情”或“你认为你身处在互联网是安全的,这太天真了”。

但是,人们需要在他们花钱时保有安全感,毕竟你不会在网络服务器上输入你的信用卡号,如果你知道它是不安全的话。

在信息加密领域,有一个算法始终是世界上最重要的算法之一,它就是RSA算法。

这个算法是由RSA公司的创始人所建立的,它使信息加密惠及千家万户,奠定了当今信息加密的运作基础。

RSA算法用来解决一个简单而又复杂的问题:

怎样在不同平台和终端用户之间共享公钥,继而实现信息加密(我想说明一下这个问题还没完全解决,我想我们需要基于这个方向做更多工作)。

4.哈希算法安全在线支付准确地说,它不能称之为是算法,它是美国国家标准暨技术学会定义的加密散列函数族中的一员,但是这族算法对整个世界的运作至关重要。

从你的应用商店,你的邮件,你的杀毒软件,到你的浏览器等等,所有这些都在使用安全哈希算法,它能判断你是否下载了你想要的东西,也能判断你是否是中间人攻击或网络钓鱼攻击的受害者。

随着互联网的发展现在有了网上银行和在线支付,查好车次时间及票务信息,我们通过网上银行可以很方便地完成在线支付,顺利搞定车票门票。

在线支付是互联网时代的产物,也是一个改变了我们支付习惯,真正为用户带来方便的重要技术。

之所以我们可以远离过去那种为了买东西而奔波、排队的场景,都要感谢安全哈希算法为我们提供了在线交易的安全性。

当我使用网上银行完成支付的那一刻,其实是安全哈希算法帮我完成了一系列安全检测动作。

只有当银行服务器通过哈希算法验证了我的数字签名合法性之后,我们的在线交易才会顺利完成。

5.排序算法轻松归队可能好多人提起写代码,都会觉得枯燥乏味,其实不然,能写出赏心悦目的代码,也是一种美,突破自己之后的那种快乐是无法用言语来形容的。

程序员在起步之初最熟悉不过的就是各种各样的排序算法了。

最初接触编程时,我也绞尽脑汁思考过一个问题,并被这个算法折磨了很久:

怎样给一个磁盘文件排序?

当你最终找到高效快捷精准的算法后,发现其实一切都是浮云。

这个算法如果用严谨的逻辑思维可以解释如下:

输入:

一个最多包含n个正整数的文件,每个数都小于n,其中n=10,000,000。

输入文件中没有重复的整数,没有其他数据与该整数相关联。

输出:

按升序排列这些数,并写入磁盘。

约束:

有1MB多(不超过2MB)的内存空间可用,有充足的硬盘空间。

最初想到的是快速排序,对冒泡排序的一种改进。

快速排序算法的基本思想是:

每一趟排序中找一个点pivot,将表分割成独立的两部分,其中一部分的所有Record都比pivot小,另一部分比pivot大,然后再按此方法对这两部分数据分别进行快速排序。

但是设想一下:

如果用一个int保存一个正整数,一个int为4Byte,100万个数要用400万Byte,约为4M。

如果用快排,时间复杂度为O(nlogn)。

考虑到问题的特殊性,所有数字均为正整数,且都不重复,这样的问题可以用位图算法解决。

每个数字对应位图中的一位,如果数字出现则置1,否则置0。

一个int4Byte可以保存32个数,因为所有的数都小于1000万,所以可以先用大小为1000万的位图来记录这100万个数,最后从头扫描这个位图,把置1的数字输出就是按序的结果。

用位图排序需要的空间约为1.25M,时间复杂度为O(N),无论空间还是时间都比快排好。

排序是非常常用,非常基本的算法。

当然,排序的方法还有有很多,如插入排序、选择排序、希尔排序、归并排序、堆排序等等。

下面,逐一介绍。

当然每种排序都有其用武之地,在使用时一定要对号入座哦!

插入排序,简单说就是每次选未排序的队列中最小的条目插入到已排序队列的最后:

选择排序,和插入有点像,是每次从拿未排序中的第一个条目插入到已排序中应该插入的位置:

希尔排序,是插入排序的一种,是针对直接插入排序算法的改进。

希尔排序的基本思想是:

先取一个小于count的增量increment,把表中Record分为increment组,所有距离为increment的Record为同一组,现在各组中进行直接插入排序(insert_sort),然后减小increment重复分组和排序,知道increment=1,即所有Record放在同一组中进行直接插入排序为止。

归并排序,是采用分治的思想将两个已排序的表合并成一个表。

归并排序算法的基本思想是:

先将一个表分成两个表(当个数是奇数时,使左表的元素比右表多一)。

对两个表分别进行归并排序,然后将两个已排序好的表合并。

合并的思路就像将两罗纸牌混成一摞,每次取顶上最小的纸牌。

堆排序,是先将表中Record按大堆(或小堆)存放,使选取最大的Record变的极为容易,每次选取之后再提升堆。

实现排序。

继续:

)6.整数因式分解算法化繁为简这是在计算机领域被大量使用的数学算法,没有这个算法,信息加密会更不安全。

该算法定义了一系列步骤,得到将一合数分解为更小因子的质数分解式。

这被认为是一种FNP问题,它是NP分类问题的延伸,极其难以解决。

许多加密协议(如RSA算法)都基于这样一个原理:

对大的合

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 建筑土木

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1