《算法引论》PPT课件.ppt
《《算法引论》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《算法引论》PPT课件.ppt(36页珍藏版)》请在三一办公上搜索。
1、南京理工大学,算法设计与分析Algorithm Design and Analysis,孙廷凯,南京理工大学,课程内容(32学时),常用的算法设计策略(包括分治策略、动态规划、贪心策略、回溯法、随机算法等)算法复杂度分析方法(计算迭代次数、使用递归方程、频度分析等),南京理工大学,课程要求,掌握常用的算法设计策略、算法复杂度分析方法授课方式:讲授考核方式:,南京理工大学,教材,算法设计技巧与分析,M.H.Alsuwaiyel著,电子工业出版社,吴伟昶等译,2004,南京理工大学,相关参考文献,Algorithm Design Techniques and Analysis,M.H.Alsuwa
2、iyel.(影印本).电子工业出版社.2003算法导论(第2版),Thomas H.Cormen等著,潘金贵等译,机械工业出版社,2006.计算机算法设计与分析(第3版),王晓东,电子工业出版社,2007.算法设计与分析,王红梅编著,清华大学出版社,2006.,南京理工大学,1 算法引论,历史背景算法复杂度与渐近分析方法如何估计算法的复杂度算法复杂度分析的意义,南京理工大学,历史背景,阶段1:二十世纪30年代,能否使用一个有效的过程来求解一个问题(相当于现在算法的概念)一直是人们所关注的。当时的焦点是将问题进行分类:可解或是不可解。关注问题是否可以求解的领域称为可计算理论(computabil
3、ity theory or theory of computation)。出现了一系列的计算模型,例如:calculus of Church、Post machines of Post、Turing machines of Turing、RAM model of computation。阶段2:随着数字计算机的出现,人们越来越关注于那些可求解的问题。一开始,人们满足于能够在一定的时间内解决一个特定的问题,而不去关注所需要的资源。慢慢地,人们需要考虑在有限资源的条件下高效地解决问题。这就导致了计算复杂度(computational complexity)这一新学科的诞生。在这个领域,主要是研究解
4、决可求解问题时所需要的资源,主要是时间和空间复杂性。有时候,其他的资源也需要考虑,例如,通信代价、需要使用的处理器的个数(使用并行计算模型)等等。,南京理工大学,引例:搜索问题,给定已经排好序(不妨假设为非降序)的n个元素A1n,现在要判定一个给定的元素x是否在此数组中出现。方法1:顺序搜索方法2:二分搜索,南京理工大学,二分搜索算法,输入:非降序排列的数组A1n和元素x输出:如果x=Aj,1 j n,则输出j,否则输出0.1.low1;high n;j02.while(low high)and(j=0)3.mid(low+high)/24.if x=Amid then j mid5.else
5、 if xAmid then high mid-16.else low mid+17.end while8.return j,南京理工大学,分析,最好情形:比较1次,最坏情形:比较logn+1次每次循环都要抛弃一些元素,例如第二次循环时,剩余元素为A1mid-1或Amid+1n,不妨设为Amid+1n,则剩余的元素个数是n/2第j次while循环时,剩余元素的个数是n/2j-1或者找到x,或者程序在子序列长度达到1时终止搜索,此时n/2j-1=1 1 n/2j-1 2 2j-1 n 2j lognjlogn+1j=logn+1,南京理工大学,算法及其性质,算法是对问题求解过程的准确描述,由有限
6、条指令组成,这些指令能在有限时间内执行完毕并产生确定性的输出。算法需满足的4个性质:输入:零个或多个外部量作为输入。输出:至少产生一个量作为输出,它(们)与输入量之间存在某种特定的联系。确定性:组成算法的每条指令都是清晰、无歧义的。有限性:每条指令的执行次数有限,执行每条指令的时间也有限。程序与算法的区别:程序是算法用某种程序设计语言的具体实现。程序可以不满足算法的有限性性质。,南京理工大学,算法的复杂度,复杂度:算法运行时需要耗费计算机资源的量,可以分为时间复杂度和空间复杂度。算法复杂度依赖于三个方面:待求解问题的规模、算法的输入和算法本身。用n,I,A分别表示问题的规模、算法的输入和算法本
7、身,用表示C复杂度,则有:C=F(n,I,A)。如果将时间复杂度和空间复杂度分开,则有T=T(n,I,A)和S=S(n,I,A)。通常,我们让A隐藏在复杂度函数名中,所以有T=T(n,I)和S=S(n,I)。由于时间复杂度和空间复杂度概念类似,计量方法类似,且空间复杂度分析相对简单,因此本课程主要讨论算法的时间复杂度。,南京理工大学,T=T(n,I)的具体化,假设计算机提供k 种元运算,分别记为O1,O2,Ok。所谓元运算指的是这样一类运算:不管使用什么样的算法和输入数据,该运算的上阶是一个常数时间(关于阶,参见后文描述)。例如,算术运算、比较、逻辑、赋值等。元运算Oi每执行一次需要的时间为t
8、i。对于给定的算法A,已经知道用到的元运算Oi 的执行次数为ei,i=1,.,k。很显然ei是n 和I 的函数,即ei=ei(n,I)。至此,就有:,南京理工大学,分析,T(n,I)给出的是在问题规模为n,输入为I 时的时间复杂度。但是我们不可能,也没必要对每种可能的输入都去求其时间复杂度。通常可以考虑3 种情形下的时间复杂度:最坏情形、最好情形以及平均情形。,实践表明:可操作性最强、最有实际价值的是算法最坏情形下的时间复杂度。,南京理工大学,使用算法的绝对运行时间来度量其时间复杂度?NO,一个编程实现了的算法的具体运行时间,不仅仅和算法本身相关,还和很多其他因素密切相关:机器性能、编程语言、
9、编译器、编程技巧等等。在分析一个算法的运行时间时,通常将该算法和其他算法在同一问题、甚至是不同的问题上进行比较,因而运行时间只能是相对的,而不是绝对的。希望算法的描述不仅独立于机器,并且可以以任何语言来加以描述,包括自然语言。希望使用度量算法运行时间的准则不依赖于技术的进步。不仅仅关注小规模输入下的,而且还关注在大规模输入下的情形。,南京理工大学,渐近分析(Asymptotic Analysis),对于T(n),当n单调递增并趋于 时,T(n)也是单调增加并趋于。为此,如果存在一个T*(n),使得当n 时有(T(n)T*(n)/T(n)0,就称T*(n)是T(n)当n 的渐近性态,或称T*(n
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法引论 算法 引论 PPT 课件
链接地址:https://www.31ppt.com/p-4847854.html