算法理论研究的是算法的设计技术和分析技术.前者是指面对一个问毯.如何设计一个有效的葬法。后者是对已设计的算法.如何评价或翔断其优劣.二者是相互依存的,设计出的林法需要检脸和评价.对算法的分析反过来又将改进林法的设计。压力校验仪算法的基本概念。
算法的概念在计算机科学锁城几乎无处不在.在各仲汁算机软件系统的实现中.算法设计往往处于核心地位。例如.操作系统是现代什算机系统中*的系统软件.操作系统的各个任务都是一个单性的问。
毯,每个问呀由操作系统中的一个子程序根据特定的葬法来实现.用什么方法来设汁算法.如何荆定一个林法的优劣.所设计的算法需要占用多少时间和空间资耳.在实现一个软件系统时.都是必须予以解决的重要问题。
1.1.1乃什a要学习算法
用计算机求解任何问粉郁离不开程序设计.而松序设计的核心是算法设计.一般来说.对程序设计的研究可以分为a个层次:算法,方法学、诱言和工其。其中算法研究位于zui高层次。算法对程序设计的指导可以廷续几年共v.几十年.它不依技于方法学、语言和工具的发展与变化。数显压力表例如.用于数据存储和检索的,lash算法产生于2。世纪50年代.用于排序的快速排序算法发明于20世纪wil年代.但它们至今仍被人们广为使用.可是程序设计方法已经从结构化发展到面向对象.程序设汁语言也变化了几代.至于编程工其很难维待3年不变。所以.对于从事计算机专业的人士来说.学习算法是非常必要的。
学习算法还能够提高人们分析问肠的徒力.算法可以肴作是解决问肠的一类特殊方法—它不是问颐的答案.而是经过定义的。数显压力表用来获得答案的求解过程。因此.无论是否涉及计算机,特定的算法设计技术都可以粉作是问肠求解的有效策略。若名的计算机科学家科努思(donaldknuth)是这样论述这个问题的:“受过良好训练的计排机科学家知道如何处理算法。如何构造算法、操作算法、理解算法以及分析算法.这些知识远不只是为了编写良好的计算机程序而准备的。算法是一种一般性的智能工具,一定有助于我们对其他学科的理解,不管是化学、语言学、音乐还是另外的学科。为什么算法会有这种作用呢?我们可以这样理解:人们常说一个人只有把知识教给别人,才能宾正拿握它。实际上一个人只有把知识教给什林机,才能a正农扭它,也就是说.将知识表述为一种其法……比起简单地按照常规去理解事物.用算法将其形式化会使我们获得更加深刻的理解。.
算法研究的核心问地是时间(速度)问越。人们可能有这样的贬问:既然计算机硬件技术的发展使得计算机的性能不断提高.算法的研究还有必耍吗?
汁算机的功能越强大.人们就越想去尝试更复杂的问班,而更复杂的间硒需要更大的计杯。现代计算技术在计算能力和存储容且上的革命仅仅提供了计算更复杂问颐的有效工具,无论硬件性能如何提高,算法研究始终是推动计算机技术发展的关健。下面着几个例子.
检索技术
'vim世纪50年代.检索的对象是规棋比较小的掀据集合.例如.编译系统中的标识符表.表中的记录个数一般在几十至效百这样的效.级。20世纪70年代~80年代.数据管理采用数据库技术.效据库的规棋在k级或m级.检索算法的研究在这个时期取得了巨人的进展.
20世纪}ii年代以来,internet引起计算机应用的急速发晨.海f效据的处if!技术成为研究的热点,压力校验仪而且数据胜留的存储介质、数据的存储方法以及数据的传艳技术也发生了许多变化.这些变化使得检索算法的研究更为复杂.也更为,要。
近年来.智能检索技术成为基fweb倍息检索的研究热点.使用搜索引攀进行web信息检索时.经常看到一些搜索引攀前41'.个搜索结果中几乎有一半来自同一个站点的不同页面.这是检索系统缺乏智能化的一种表现。另外.在传统的web信息检索服务中.信息的传愉是按pul!的棋式进行的.即用户找信息。而采用push的方式.是信息找用户.用户不必进行任何信息枪索.就能方便地获得自己感兴趣的俏息.这就是智能信息推送技术.这些新技术的每一项孩要进步都与算法研究的突破有关。
2.压绪与解压绮声,多媒体技术的发1ri计算机的处理对alb原来的字符发展到图像、图形、音氛视栩砰多媒体致化信息,这些信息数字化后.其特点就是数据t非常鹰大.同时.处理多摸体所需的高速传输速度也是汁算机总线所不能承受的。因此数显压力表对多媒体数据的存储和传愉都要求对数据进行压缩。声音文件的mp3压缩技术说明了压绘与解压缩算法研究的巨大成功,一个抽放3-4分钟歇曲的mp3文件通常只需3mb左右的徽盘空间.