分享

话题

 yyiganlib 2016-01-29

几十年来,许多精巧的计算机算法给计算领域带来了重大变革。这些算法在标准计算程序中操作中间运算符,产生出各种不同的高效函数,从而用于编制各种错综复杂的计算机程序,成为推动如今计算机发展的主要动因。下面列举了一些改变计算机使用的计算算法。


1、压缩技术

霍夫曼编码(HuffmanCoding)


该算法广泛应用于无损数据压缩。David A.Huffman一直在寻找最高效的二进制编码,于1951年提出基于有序频率二叉树编码的想法,事实也证明这是最高效的编码方式。由于简单高效,该编码算法被应用于各种压缩技术如DEFLATE (PK压缩算法)和多媒体编码如JPEG和MP3.


2、密码学算法

公钥加密算法


指需要两套独立钥匙的加密算法,公钥用于解密明文或者核实数字签名,私钥则用于解密密文或者生成数字签名。公钥加密技术帮助用户在公共频道安全交流。1997年有公开消息称,该算法由英国政府通信部门(GCHQ)的James H.Ellis, Clifford Cocks和 Malcolm Williamson于1993年在联合秘密设计并于同年投入使用。


3、检索算法

Dijkstra's算法 (Dijkstra's algorithm)


1956年由Edsger Dijkstra开发,是一种图检索算法,解决了图单源点最短路径问题,并由此产生了最短路径树。该算法被广泛应用于各种图算法的路径或者子路径。运用这种算法,单张图表上的最短路径便能轻松算出(如上图)


4、二进制检索算法



该检索算法用于定位由关键码值形成序列的关键字。通常字典中有用于查找字/词所在页码的列表;通讯录中也有名字,地址和电话号码清单,只要知道名字就可以迅速找到电话号码和地址。


5、排序算法

快速排序


1960年由TonyHoare开发,用于为需要转化的字排序,以便为已排序的代码字典提供便捷匹配。该算法作为默认的库排序函数(并于该标准C库函数中被命名为gsort)被应用于UNIX系统并因此名声大噪.


6、数学算法

Karatsuba算法


是一种快速乘法,由Anatolii Alexeevitch Karatsuba于1962年开发。该算法减少了相乘的数段并提供更快捷的乘法。Toom–Cook算法将该算法做了改进,但对于大数乘法来说Sch?nhage–Strassen算法则是更高效的方案。


7、欧几里德算法



最大公约数,也就是能同时分别被两个正整数除尽的最大整数,可由欧几里德算法算出。该算法只应用减法和对照方法找出最大公约数,因此总固定被用于许多高级算法领域。该算法让欧几里德享有盛誉,也被誉为是公元前300年欧几里德时代最古老的算法。


8、图形学的突破性发展

Bresenham直线算法


1962年由IBM的JackElton Bresenham设计,用于为电脑屏幕画出直线。该算法应用简单的整数加减法和位移操作,是计算机图形学的先锋技术,并由此延伸出诸如能画圆的函数的算法。该直线算法便捷高效,在如今的硬件领域仍很重要并沿用,如绘图仪器和现代图形卡。


9、平方根倒数快速算法


该算法用于快速计算积的平方根的倒数,用在3D图形程序中确定光线和投影效果(涉及每秒成千上万次的计算),1999年在《雷神之锤III竞技场》源代码中应用, 2002年才被广泛使用。该算法用一系列简单技术解决复杂的运算,虽由JohnCarmack开发,但最早在Silicon图形学和3dfx中就有所应用,当时用的是Gary Tarolli的执行方案。

点击链接加入群【C++/C语言/编程学习1】:C++/C语言/编程学习1

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多