第1章算法设计序言精选PPT.ppt

上传人:石*** 文档编号:70109775 上传时间:2023-01-16 格式:PPT 页数:29 大小:1.88MB
返回 下载 相关 举报
第1章算法设计序言精选PPT.ppt_第1页
第1页 / 共29页
第1章算法设计序言精选PPT.ppt_第2页
第2页 / 共29页
点击查看更多>>
资源描述

《第1章算法设计序言精选PPT.ppt》由会员分享,可在线阅读,更多相关《第1章算法设计序言精选PPT.ppt(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第1章算法设计序言第1页,此课件共29页哦nAre you thinking about these questions?Why do we need to study this course?What should we learn in the course?How about the instructor?Is it hard to pass the exams?I am not good in Math.My background is not strong.I can read little English.NO PROBLEM Welcome!第2页,此课件共29页哦课程介绍n学时

2、:32学时+16实验n考试方式:考试 成绩:20%中期考试+10%平时+70%期末n教材:王晓东,算法设计与分析(第二版),清华大学出版社;n参考资料:1张德富,算法设计与分析,国防工业出版社;2Michael T.Goodrich,算法分析与设计,人民邮电出版社。3 Kleinberg 等,算法导论,清华大学出版社第3页,此课件共29页哦主要内容介绍n第1章算法引论n第2章递归与分治策略n第3章动态规划n第4章贪心算法n第5章回溯法n第6章NP完全性理论第4页,此课件共29页哦课程信息n20092009年计算机学院算法选修课年计算机学院算法选修课:选修人数选修人数:112:112 参加期末考

3、试人数参加期末考试人数:79:79 合格人数合格人数:57:57最高分最高分:94:94n20112011年计算机学院算法必修课年计算机学院算法必修课:选修人数选修人数:100:100 平均分:平均分:68.7 68.7 最高分最高分:89:89n建议建议:1.If you do not like math or analysis or logic,please note that the course may be a high load for you.(this course needs your time)2.Read the lecture notes carefully,which

4、 will be more helpful for you than the text books.3.Make sure that you can solve the problems that I put highlines in the course.第5页,此课件共29页哦1.1 基本介绍第6页,此课件共29页哦思考n什么是计算机你为什么选择这个专业?什么是计算机你为什么选择这个专业?n计算机和一般机械的差别在哪里?计算机和一般机械的差别在哪里?n我们需要计算机来做什么?我们需要计算机来做什么?n什么是计算机问题?什么是计算机问题?ComputerInputsOutputs第7页,此课

5、件共29页哦计算机问题n计算机问题计算机问题:A task to be performed by computers (需要计算机解决的任务)(需要计算机解决的任务)Problems Mathematical function from inputs to matching outputs.(输入到对应输出的一个数学功能)(输入到对应输出的一个数学功能)A particular input must always result in the same output every time the function is computed(每次同样的输入计算机给出同样的输出)(每次同样的输入计算机

6、给出同样的输出)Problem definition should include constraints on the resources that may be consumed by any acceptable solution(问题定义时需要给出对计算机解决问题时所能用的资源的规定,(问题定义时需要给出对计算机解决问题时所能用的资源的规定,比如说运行时间、内存等)比如说运行时间、内存等)第8页,此课件共29页哦三种不同的计算机问题三种不同的计算机问题nDecision Problem(判断问题,回答判断问题,回答yes或者或者no)比如:输入的数是否大于比如:输入的数是否大于60nO

7、ptimal Problem(优化问题,求最优解)(优化问题,求最优解)比如:从比如:从A到到B的最短路径是什么?的最短路径是什么?nNumerical Calculation(数值计算)(数值计算)比如说用计算机求方程或积分等,这些问题都属于数值计算中比如说用计算机求方程或积分等,这些问题都属于数值计算中第9页,此课件共29页哦Algorithms(算法)n1.a method or a process followed to solve a problem using a computern2.takes the input of a problem and transforms it t

8、o the output n3.A problem can have many algorithmsComputerInputsOutputs什么是算法?问题 算法程序第10页,此课件共29页哦Algorithm Properties(算法的性质)Must be correct 算法必须是算法必须是正确正确的的Composed of a series of concrete steps包含一系列包含一系列具体具体的步骤的步骤No ambiguity as to which step will be performed next 在执行算法时没有在执行算法时没有二义性二义性Composed of

9、 a finite number of steps 只包含只包含有限有限步步Must terminate必须必须终止终止第11页,此课件共29页哦n输 入:有零个或多个外部量作为算法的输入。n输 出:算法产生至少一个量作为输出。n确定性:组成算法的每条指令清晰、无歧义。n有限性:算法中每条指令的执行次数有限,执行每条指令的时间也有限。是满足下述性质的指令序列。算法:第12页,此课件共29页哦程序(program)与算法(algorithm)计算机程序是算法用某种程序语言的一个具体表示计算机程序是算法用某种程序语言的一个具体表示 一个一个Java程序和一个程序和一个C语言程序可能做的是同一个事情

10、,这两语言程序可能做的是同一个事情,这两个语言表达的就是同一个算法个语言表达的就是同一个算法 计算机计算机程序程序是用来给是用来给计算机计算机读的读的而而算法算法是给是给人人来读的,直接将算法输入计算机是不能运行的来读的,直接将算法输入计算机是不能运行的Algorithms can be expressed by pseduocodes(伪代码)(伪代码)or just some short steps that are easy to read and understand第13页,此课件共29页哦对计算问题的算法设计算法设计思想总结选用该问题的一个数学模型选用该问题的一个数学模型-在已知条

11、件下的初始状态、结束状态和状态关系-从已知状态到达结束状态的运算步骤-形成算法为了将两层运算隔开,使二者在设计时不互相影响必须对二者的接口进行抽象。为了将两层运算隔开,使二者在设计时不互相影响必须对二者的接口进行抽象。让底层通过接口为顶层服务,顶层通过接口调用底层运算。这个接口就是让底层通过接口为顶层服务,顶层通过接口调用底层运算。这个接口就是抽象数抽象数据类型据类型(abstract data types,ADT)顶层运算步骤顶层运算步骤底层运算步骤底层运算步骤自顶向下数据模型级数据结构级第14页,此课件共29页哦常用算法设计方法常用算法设计方法nExhaustive search(穷举搜索

12、)Greedy method(贪心法)nDivide-and-conquer(分而治之法)nDynamic programming(动态规划)nBack tracking(回溯法)nBranch-and-bound(分支定界法)n第15页,此课件共29页哦1.1.2 2 一些算一些算法问题法问题第16页,此课件共29页哦活动安排问题活动安排问题nInput.Input.一系列活动,每个活动有一个起始时间和结束时间一系列活动,每个活动有一个起始时间和结束时间.nGoal.Goal.找出最大一组活动,使得这些活动两两的时间不重叠。找出最大一组活动,使得这些活动两两的时间不重叠。Time012345

13、67891011fgheabcdheb第17页,此课件共29页哦带权重的活动安排问题带权重的活动安排问题nInput.Input.一系列活动,每个活动有一个起始时间和结束时间,还一系列活动,每个活动有一个起始时间和结束时间,还有一个权值。有一个权值。nGoal.Goal.找出一组权重最大的活动,使得这些活动两两的时间找出一组权重最大的活动,使得这些活动两两的时间不重叠。不重叠。Time012345678910112011161323122026第18页,此课件共29页哦二分图匹配问题二分图匹配问题C152AE3BD4nInput.Input.一个二分图一个二分图.nGoal.Goal.找出数量

14、最多的一组边,使得这组边中任何两条都没有找出数量最多的一组边,使得这组边中任何两条都没有公共顶点。公共顶点。第19页,此课件共29页哦最大独立集问题最大独立集问题62517346514nInput.Input.一个图一个图.nGoal.Goal.找出图中数量最多的一组点,使得这组点中任何两点间找出图中数量最多的一组点,使得这组点中任何两点间都不存在一条边。都不存在一条边。第20页,此课件共29页哦1.1.3 3 算法复算法复杂性分析杂性分析第21页,此课件共29页哦一个故事一个故事 n在席盖莫夫著的从一到无穷大中记载着一个关于古印度舍罕王(Shirham)的故事:n 舍罕王打算重赏“国际象棋”

15、(真正的国际象棋是后来进化演变来的)的发明人和进贡者,宰相西萨班达伊尔(Sissa Ben Dahir)。这位聪明的大臣的胃口看来并不大,他跪在国王面前说:“陛下,请您在这张棋盘的第一个小格内,赏给我一粒麦子;在第二个小格内两粒,第三个给四粒,照这样下去,每个小格内都比以前一个小格加一倍。陛下啊,把这样摆满棋盘上所有64格的麦粒,都赏给您的仆人罢!”舍罕王听后很生气,说:”你也太小看我们印度国了,我拿一袋子麦子全给你好了。“n 西萨班达伊尔坚持说还是按要求放满好。最后大家拿了许多袋麦子过来都只完成了一小部分的填充工作,大家这才感觉到问题的严重。第22页,此课件共29页哦什么问题?什么问题?nS

16、hirhams story.The amount of wheat012323632021222322326312488388608 9223372036854775808 Sum371516777215 18,446,744,073,709,551,615.第23页,此课件共29页哦算法复杂性分析 算法复杂性是算法运行所需要的计算机资源的量,需要时间资源的量称为时间复杂性时间复杂性,需要的空间资源的量称为空间复杂性空间复杂性。这个量应该只依赖于算法要解的问题的规模、算法的输入和算法本身的函数。如果分别用N、I和A表示算法要解问题的规模、算法的输入和算法本身,而且用C表示复杂性,那么,应该有C

17、=F(N,I,A)。一般把时间复杂性和空间复杂性分开,并分别用T和S来表示,则有:T=T(N,I)和S=S(N,I)。(通常,让A隐含在复杂性函数名当中)第24页,此课件共29页哦1.4 算法复杂性分析主要问题:如何将复杂性函数具体化?根据T(N,I)的概念,它应该是算法在一台抽象的计算机上运行所需要的时间。u设此抽象的计算机所提供的元运算有k种,分别记为O1,O2,Oku又设每次执行一次这些元运算的时间分别为t1,.tku对于算法A,设统计用到元运算Oi的次数为ei ei=ei(N,I)因此第25页,此课件共29页哦1.4 算法复杂性分析最坏情况下的时间复杂性:最好情况下的时间复杂性:平均情

18、况下的时间复杂性:其中DN是规模为N的合法输入的集合;I*是DN中使T(N,I*)达到Tmax(N)的合法输入;是中使T(N,)达到Tmin(N)的合法输入;而P(I)是在算法的应用中出现输入I的概率。第26页,此课件共29页哦渐进表达渐进表达n对于一个输入为对于一个输入为n n的问题,现给出两个算法的问题,现给出两个算法A A和和B.B.n算法算法A A运行运行100n100n步,算法步,算法B B运行运行nlognnlogn步。步。n哪个算法好?哪个算法好?就算都是多项式,也需表现差异就算都是多项式,也需表现差异n若算法若算法A A运行运行n n2 2+100n+100n步,算法步,算法B

19、 B运行运行2n2n2 2步。步。n哪个算法好?哪个算法好?n很多时候我们认为很多时候我们认为n n和和n n2 2之间的差异是较大的,而之间的差异是较大的,而n n和和5n5n之间之间的差异是微小的甚至可以忽悠不计的,怎样表达这种差异?的差异是微小的甚至可以忽悠不计的,怎样表达这种差异?n用渐进表达式可以解决这个问题。用渐进表达式可以解决这个问题。第27页,此课件共29页哦渐进分析复杂性渐近性态:当N单调增加趋于 时,T(N)也单调增加趋于 如果存在 当N-时有那么称 是T(N)的渐近性态直观上 是T(N)中略去低阶项所留下的主项第28页,此课件共29页哦算法复杂性分析复杂性渐近性态:比如:T(N)可取的一个答案是进一步考虑到分析算法复杂性的目的在于比较求解同一问题的两个不同进一步考虑到分析算法复杂性的目的在于比较求解同一问题的两个不同算法的效率算法的效率 如果两个算法的渐近复杂性的如果两个算法的渐近复杂性的阶阶不相同时,只需要确定各自的不相同时,只需要确定各自的阶阶就可以判断哪个算法的效率高!就可以判断哪个算法的效率高!第29页,此课件共29页哦

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 资格考试

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁