`
SunnyYoona
  • 浏览: 373416 次
社区版块
存档分类
最新评论

[IT技术]改变计算技术的伟大算法

 
阅读更多

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

压缩技术

哈弗曼编码


哈弗曼编码在无损数据压缩中广泛应用。为了找到一种最高效的二进制编码,哈弗曼在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实现的版本。

分享到:
评论

相关推荐

    计算机动画算法与技术(PDF)

    计算机动画算法与技术第二版,PDF版,影印版,需要图形学基础

    计算机算法引论——设计与分析技术.rar

    计算机算法引论——设计与分析技术.本书讲述计算机算法的各种设计策略,包括分治技术、贪心技术、动态规划技术回溯和分支限界技术等。介绍算法分析技术、算法的时间和空间复杂度分析方法;讨论各类经典的应用问题...

    计算几何算法和实现.pdf

    计算几何算法和实现.pdf

    计算机动画算法与技术 第二版中文版

    计算机动画算法与技术(第二版) 原作名: Computer Animation Algorithms and Techniques 译者: 刘祎 (不包含附录)

    算法设计与分析:05 算法分析与问题的计算复杂度.pdf

    "算法设计与分析:05 算法分析与问题的计算复杂度.pdf" 算法分析是计算机科学中的一种重要技术,旨在评估算法的性能和效率。计算复杂度是算法分析中一个重要概念,它衡量了算法执行的时间或空间复杂度。本文将详细...

    并行计算——结构·算法·编程习题答案

    并行计算——结构·算法·编程习题答案 并行计算——结构·算法·编程习题答案 并行计算——结构·算法·编程习题答案 并行计算——结构·算法·编程习题答案 并行计算——结构·算法·编程习题答案

    《计算机算法设计与分析第三版课后答案》 王晓东编著

    《计算机算法设计与分析第三版课后答案》 王晓东编著 里面有很详细的课后答案讲解 加上图形 算法分析各章节都有详细的讲解! 加上图形 算法分析各章节都有详细的讲解!加上图形 算法分析各章节都有详细的讲解!加上...

    中文句子相似度计算算法

    中文句子 相似度计算算法 计算句子的相似度

    用遗传算法计算最短路径的MATLAB程序

    用遗传算法计算最短路径的MATLAB程序,在数学建模及其他编程中一种重要的算法思想

    [并行计算——结构·算法·编程].陈国良.文字版

    本书以并行计算为主题,主要讨论并行计算的硬件基础——当代并行计算机系统及其结构模型,并行计算的核心内容——并行算法设计与并行数值算法以及并行计算的软件支持——并行程序的设计原理与方法。本书强调融并行机...

    计算机图像处理技术与算法.rar

    计算机图像处理技术与算法源码. 本书是取材于数字图像处理领域几十年的发展成果,包括传统的灰度图像处理和最新的彩色图像处理内容,结合多年的数字、科研和实践经验编写而成。本书既全面介绍了数字图像处理的理论...

    实时碰撞检测算法技术

    另外,《实时碰撞检测算法技术》还提供了相应的算法、代码以及伪代码,以帮助读者进一步理解计算方案的实现过程。, 《实时碰撞检测算法技术》适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发...

    计算机常用数值计算算法与程序 c++版

    本光盘是《计算机常用数值计算算法与程序 C++版》一书的配套光盘,盘中包括了书中所有的C++程序源代码文件,每个源程序文件的文件扩展名都使用.cpp形式。这些C++程序已经在微软公司Windows平台下的Virsual C++ ...

    计算复杂性与算法分析

    内容提要: 本书论述了形式语言的基本内容,包括有限自动机、下推机和图灵机的基础理论,讨论了如分治策略、动态规划、回溯法、贪心法以及概率算法的基本技术;同时,也给出了计算复杂性理论的基本知识。

    计算几何算法概览

    在现代工程和数学领域,计算几何在图形学、机器人技术、超大规模集成电路设计和统计等诸多领域有着十分重要的应用。在本文中,我们将对计算几何常用的基本算法做一个全面的介绍,希望对您了解并应用计算几何的知识...

    计算机算法设计与分析导论(Sara Baase,第三版)课后习题答案

    研究生教材《计算机算法设计与分析导论》(Sara Baase,第三版)课后习题答案,汉语版。

    计算几何——算法分析与设计周培德.pdf

    计算几何——算法分析与设计周培德.pdf 计算几何——算法分析与设计周培德.pdf 计算几何——算法分析与设计周培德.pdf

    计算机几何算法与实现(Visual C++版) 源码

    计算机几何算法与实现(Visual C++版) 源码 是学习Bezier曲线,三次插值曲 等几何算法理论有效的学习参考代码,例子中最精彩的三维茶壶样条实现, 可方向键进行三维 转动,非常精彩,值得认真学习,

Global site tag (gtag.js) - Google Analytics