在过去,很多巧妙的计算机算法设计,改变了我们的计算技术。通过操作标准计算机中提供的中间运算符,可以产生很多的高效函数。这些函数导致了计算机程序的复杂性和多样性,这也是今天计算机时代快速发展的重要原因。如下所示,我们列举了一些算法,它们改变了我们的计算机使用。

压缩技术

哈弗曼编码


哈弗曼编码在无损数据压缩中广泛应用。为了找到一种最高效的二进制编码,哈弗曼在1951年提出了根据字符频率排序的二叉树这样的编码方法。这种方法被证明,是最有效的编码方法。由于这种方法简单、高效,这种方法被用在很多的压缩方法中比如:DEFLATE(PKZIP压缩软件中的算法),以及很多的多媒体编码包括JPEG和MP3中。

密码学

公共秘钥加密

对于加密算法而言,需要两种不同的秘钥,公共秘钥是用来作为加密的明文或者验证数字签名。私钥则用来解密密文,或生成数字签名。公共秘钥加密使得用户可以在公共信道中安全传送数据。虽然这种方法于1997年发表,但是由英国政府通讯总部(GCHQ)的James H. Ellis, Clifford Cocks, Malcolm Williamson在1973年设计完成,并且投入使用。

搜索算法

Dijkstra 最短路径算法


这一算法由Dijkstra在1956年完成,这是一个为图设计的搜索算法。它解决了单向图中的最短路径问题,因此,也可以用来生成最短路径树。很多基于图的算法中,都应用了这样的算法来进行路径规划或是子路径选择。上图展示了在单向图中,利用这样的算法求最短路径的过程。

二分搜索算法

二分搜索算法用来在已经有序的数组中找到关键字的位置。在说明词义的字典中,词的排列基本是有序的。电话本上,记录也都按照人名、地址或是电话号码排序。通过这样的算法,我们可以由人名,很快地在电话本中找到相应的电话以及地址。

排序算法

快速排序

这种算法由Tony Hoare在1960年设计。这个算法本来用于调整待翻译单词的顺序,从而使它们与词典顺序更加一致,方便翻译。这种算法由于在Unix系统中被用作默认排序算法而声名大噪。同时,这种算法由于它在C语言标准库中的函数名“qsort”而得名。

数学方法

Karatsuba快速相乘算法


这种算法用来更快完成相乘的数学操作。由Anatolii Alexeevitch Karatsuba在1962年提出。它减少了乘法中需要操作的数字,并且提供了一个快速的相乘计算方法。这种算法的改进算法是Toom–Cook算法。然而,对于大数相乘,Schönhage–Strassen 算法则是一种更快速的解决方案。

欧几里得算法(辗转相除)

利用欧几里得算法,可以计算最大公约数。即两个正整数可以被整除的最大数。虽然这种算法只通过减法和比较来找到最大公约数,但是它被应用在了许多高级算法中。欧几里得被认为是这个算法的发明者,欧几里得的这个算法被认为是欧几里得时期(公元前300年左右)最古老的算法之一。

图形学的发展

Bresenham直线算法

这种算法由Jack Elton Bresenham在1962年,他在IBM工作期间提出。这种算法本来用于在计算机屏幕上画出直线。算法用到的操作非常简单,整数的加法,减法和移位操作。这在计算机图形学中是非常先进的方法。基于这样的方法,后来算法又有了一系列的拓展,比如:画圆算法等。由于这种算法的高效、快捷,至今在很多硬件中(比如绘图仪和现代图形卡等)这种算法仍然十分重要并且仍在使用。.

平方根倒数速算法

这种算法提供了一种快速计算平方根的倒数的方法。这种方法在3D图像中广泛应用于确定光线和投影关系,这可能需要每秒上千万次的计算速度。在《雷神之锤三:竞技场》的源代码中就有这样的算法,可是,直到2002年这种算法才被广泛应用。这个算法使用了一系列的简单操作来解决复杂问题。虽然很多人认为,这种算法由John Carmack研发,但是,SGI和3dfx早就曾在产品中应用此算法,当时应用的是Gary Tarolli实现的版本。

[IT技术]改变计算技术的伟大算法相关推荐

  1. 十个改变了计算机世界的算法,你知道几个?

    算法的出现帮助我们解决了生活中很多常见的问题,让一些事看起来没有那么的复杂.今天小千就来给大家介绍十个改变了计算机世界的算法. 什么是算法? 简而言之,任何定义明确的计算步骤都可称为算法,接受一个或一 ...

  2. 京东云申元庆:用创新技术改变中国,顺道改变世界

    有Samuel这样的掌舵人对云计算有着深入洞察,京东云有戏! 这个世界唯一不变的就是变化本身,对此,我们究竟该如何应对? 在8月17日的英特尔数字创新行业峰会上,京东云事业部总裁申元庆(Samuel ...

  3. 北京内推 | 阿里Lazada广告技术团队招聘推荐广告算法工程师

    合适的工作难找?最新的招聘信息也不知道? AI 求职为大家精选人工智能领域最新鲜的招聘信息,助你先人一步投递,快人一步入职! 阿里巴巴 Lazada是阿里布局全球化战略最核心的主战场,负责在东南亚这个 ...

  4. 如何用技术改变生活 哪个瞬间你突然觉得读书真有用?

    作者:南慕伦 链接:https://www.zhihu.com/question/35720340/answer/262160679 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转 ...

  5. 基于RNA测序技术的转录组从头拼接算法研究

    基于RNA测序技术的转录组从头拼接算法研究 摘要: 生物信息学主要研究分子生物学领域,而对于分子生物学领域,转录组的从头拼接又是其核心内容,即利用转录组的测序片段拼接出整个转录组中的所有表达的转录体. ...

  6. python图像分类实验总结_图像分类的5种技术,总结并归纳算法、实现方式,并进行实验验证...

    本文为你介绍图像分类的5种技术,总结并归纳算法.实现方式,并进行实验验证. 图像分类问题就是从固定的一组分类中,给输入图像分配标签的任务.这是计算机视觉的核心问题之一,尽管它看似简单,却在实际生活中有 ...

  7. Interview:算法岗位面试—10.15上午—上海某公司算法岗位(偏图像算法,制造行业)技术面试考点之AI算法与实际场景结合产生商业价值的头脑风暴

    Interview:算法岗位面试-10.15上午-上海某公司算法岗位(偏图像算法,制造行业)技术面试考点之AI算法与实际场景结合产生商业价值的头脑风暴 导读:一心想去互联网,未必能够发挥自己最大价值, ...

  8. Go语言逆向技术:恢复函数名称算法

    摘要:在对程序做安全审计.漏洞检测时,通常都需要对程序做逆向分析,本文在没有符号表的情况下,提出了一种恢复函数名称的算法,方便对go语言二进制文件进行逆向分析,提升分析效率. 本文分享自华为云社区&l ...

  9. Maven问题总结 - 3 - 技术改变生活商业成就梦想 - 51CTO技术博客

    Maven问题总结 - 3 - 技术改变生活商业成就梦想 - 51CTO技术博客 Maven问题总结 - 3 - 技术改变生活商业成就梦想 - 51CTO技术博客 Maven问题总结 - 3 2010 ...

  10. YY李学凌的野心,要用区块链技术改变传统信息的传输路径

    7月22日,欢聚时代董事长李学凌出席某科技商业峰会并发表演讲,演讲中,李学凌对外展示了一款基于区块链技术的即时通讯应用BCM. 李学凌在演讲中透露出来几个重要的信息.一是欢聚时代很重视区块链技术应用, ...

最新文章

  1. Linux System Programming --Chapter Eight
  2. 累加出整个范围所有的数最少还需要几个数
  3. CSS 字体、边框阴影
  4. VTK:碰撞检测用法实战
  5. 4-2   ADO.NET-查询和检索数据1
  6. python下俄罗斯方块的游戏设计_[源码和文档分享]基于Python的PyGame的俄罗斯方块游戏设计与实现...
  7. linux下启动Oracle服务和监听程序
  8. JavaScript实用代码片段
  9. 服务器系统信息查询命令
  10. redis:客户端管理
  11. 利用GPS定位[android]
  12. 英文单词Advanced的意思
  13. JDK软件安装+环境变量配置图文详解(Win10环境)
  14. Matlab中在一个矩阵后面加apos是什么意思?绘图时出现错误该如何修改,麻烦解答一下,谢谢了
  15. Filebrowser:一款轻量级个人网盘
  16. Google Colaboratory中有多个py文件时的使用技巧
  17. 步进伺服电机加减速 及 位置速度控制关键程序
  18. Windows定时任务没有执行
  19. SpringBoot项目的创建和启动
  20. xxl-job优雅停止执行器即客户端tomcat

热门文章

  1. 转:linux中select()函数分析
  2. spring相关记录
  3. log4j的使用 slf4j简单介绍
  4. 对C#中事件的简单理解
  5. 全文检索lucene6.1的检索方式
  6. jQuery动态星级评分效果实现方法
  7. HTTP协议--请求与响应
  8. Java 反射机制浅析
  9. excel甘特图模板_不做规范!收数就是个灾难!Excel收集数据套路了解一下
  10. SQLite查询优化(转)