H9enRy 发表于 2014-8-8 23:39:39

改变计算技术的伟大算法

本帖最后由 H9enRy 于 2014-8-9 00:44 编辑

在过去,很多巧妙的计算机算法设计,改变了我们的计算技术。通过操作标准计算机中提供的中间运算符,可以产生很多的高效函数。这些函数导致了计算机程序的复杂性和多样性,这也是今天计算机时代快速发展的重要原因。如下所示,我们列举了一些算法,它们改变了我们的计算机使用。 压缩技术  哈弗曼编码http://www.admin10000.com/UploadFiles/Document/201403/20/20140320100426399969.GIF  哈弗曼编码在无损数据压缩中广泛应用。为了找到一种最高效的二进制编码,哈弗曼在1951年提出了根据字符频率排序的二叉树这样的编码方法。这种方法被证明,是最有效的编码方法。由于这种方法简单、高效,这种方法被用在很多的压缩方法中比如:DEFLATE(PKZIP压缩软件中的算法),以及很多的多媒体编码包括JPEG和MP3中。 密码学  公共秘钥加密http://www.admin10000.com/UploadFiles/Document/201403/20/20140320100426922805.PNG  对于加密算法而言,需要两种不同的秘钥,公共秘钥是用来作为加密的明文或者验证数字签名。私钥则用来解密密文,或生成数字签名。公共秘钥加密使得用户可以在公共信道中安全传送数据。虽然这种方法于1997年发表,但是由英国ZF通讯总部(GCHQ)的James H. Ellis, Clifford Cocks, Malcolm Williamson在1973年设计完成,并且投入使用。 搜索算法  Dijkstra 最短路径算法http://www.admin10000.com/UploadFiles/Document/201403/20/20140320100426411535.GIF  这一算法由Dijkstra在1956年完成,这是一个为图设计的搜索算法。它解决了单向图中的最短路径问题,因此,也可以用来生成最短路径树。很多基于图的算法中,都应用了这样的算法来进行路径规划或是子路径选择。上图展示了在单向图中,利用这样的算法求最短路径的过程。  二分搜索算法http://www.admin10000.com/UploadFiles/Document/201403/20/20140320100426029901.GIF  二分搜索算法用来在已经有序的数组中找到关键字的位置。在说明词义的字典中,词的排列基本是有序的。电话本上,记录也都按照人名、地址或是电话号码排序。通过这样的算法,我们可以由人名,很快地在电话本中找到相应的电话以及地址。 排序算法  快速排序http://www.admin10000.com/UploadFiles/Document/201403/20/20140320100426123524.GIF  这种算法由Tony Hoare在1960年设计。这个算法本来用于调整待翻译单词的顺序,从而使它们与词典顺序更加一致,方便翻译。这种算法由于在Unix系统中被用作默认排序算法而声名大噪。同时,这种算法由于它在C语言标准库中的函数名“qsort”而得名。 数学方法  Karatsuba快速相乘算法http://www.admin10000.com/UploadFiles/Document/201403/20/20140320100426871362.GIF  这种算法用来更快完成相乘的数学操作。由Anatolii Alexeevitch Karatsuba在1962年提出。它减少了乘法中需要操作的数字,并且提供了一个快速的相乘计算方法。这种算法的改进算法是Toom–Cook算法。然而,对于大数相乘,Schönhage–Strassen 算法则是一种更快速的解决方案。  欧几里得算法(辗转相除)http://www.admin10000.com/UploadFiles/Document/201403/20/20140320100426942189.GIF  利用欧几里得算法,可以计算最大公约数。即两个正整数可以被整除的最大数。虽然这种算法只通过减法和比较来找到最大公约数,但是它被应用在了许多高级算法中。欧几里得被认为是这个算法的发明者,欧几里得的这个算法被认为是欧几里得时期(公元前300年左右)最古老的算法之一。 图形学的发展  Bresenham直线算法  这种算法由Jack Elton Bresenham在1962年,他在IBM工作期间提出。这种算法本来用于在计算机屏幕上画出直线。算法用到的操作非常简单,整数的加法,减法和移位操作。这在计算机图形学中是非常先进的方法。基于这样的方法,后来算法又有了一系列的拓展,比如:画圆算法等。由于这种算法的高效、快捷,至今在很多硬件中(比如绘图仪和现代图形卡等)这种算法仍然十分重要并且仍在使用。.  平方根倒数速算法  这种算法提供了一种快速计算平方根的倒数的方法。这种方法在3D图像中广泛应用于确定光线和投影关系,这可能需要每秒上千万次的计算速度。在《雷神之锤三:竞技场》的源代码中就有这样的算法,可是,直到2002年这种算法才被广泛应用。这个算法使用了一系列的简单操作来解决复杂问题。虽然很多人认为,这种算法由John Carmack研发,但是,SGI和3dfx早就曾在产品中应用此算法,当时应用的是Gary Tarolli实现的版本。

1012662902 发表于 2014-8-9 00:20:08

谢谢LZ分享了,虽然说这些算法很经典,但是伟大的算法不仅仅这些,还有很多,甚至咱们当中的一些人也可能将来发明一些算法来改变世界

踏雪寻梦c 发表于 2014-8-9 01:24:33

感谢分享了

E=MC2 发表于 2014-8-9 08:49:19

不错! 学习了。

tlwangxd 发表于 2014-11-18 09:35:28

学习

tlwangxd 发表于 2014-11-18 09:43:09

学习

vanentu 发表于 2015-5-24 04:04:20

辛苦了辛苦了

2413780002 发表于 2015-5-24 23:09:43

学习学习
页: [1]
查看完整版本: 改变计算技术的伟大算法