网站大量收购闲置独家精品文档,联系QQ:2885784924

算法设计与分析重点总结.pdfVIP

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法设计与分析重点总结 考试题型: 选择 2* 10个 填空2* 10个 简答 3* 4个 程序分析填空 4* 4个 综合(代码)8* 4个 第⼀章基础知识 1.算法的定义 算法就是解决问题的⽅法,是解决某⼀特定问题的⼀组有穷指令的序列,是完成⼀个任务所需要的具体步骤和⽅法 2.算法的特征 有限性 ⼀个算法总是在执⾏了有穷步的运算之后终⽌ 确定性:算法的每种运算必须要有确切的定义,不能有⼆义性。 输⼊:每个算法有0个或多个输⼊。所谓0个输⼊是指算法本⾝定出了初始条件。 输出:⼀个算法产⽣⼀个或多个输出,这些输出是同输⼊有某种特定关系的量 可⾏性:算法中有待实现的运算都是基本的运算,原理上每种运算都能由⼈⽤纸和笔在有限的时间内完成。(实数的算术运算是 “不能 ⾏”的) 3.计算过程 只满⾜确定性、能⾏性、输⼊、输出四个特性但不⼀定能终⽌的⼀组规则 4.算法的有穷性意味着不是所有的计算机程序都是算法 5.算法正确性证明 数学归纳法,反例 :能够使算法运⾏失败的输⼊实例 6.算法的好坏 : 通过数学⽅法进⾏分析,时间复杂度,空间复杂度,循环次数(归并,快排,贪⼼的复杂度) 7.算法运⾏中主要影响运⾏时间的语句是基本操作,即占有最多⽐例的语句 8.时间复杂度分析: 1)确定⽤来表⽰问题规模的变量 ; 2)确定算法的基本操作; 3)写出基本操作执⾏次数的函数(运⾏时间函数) ; 4)如果函数依赖输⼊实例,则分情况考虑 :最坏情况、最好情况、平均情况; 5)只考虑问题的规模充分⼤时函数的增长率,⽤渐近符号O 、Θ、Ω 、o 来表⽰。 6)常⽤O和 Θ 9.基本操作 算法中的某个初等操作,基本操作的选择,必须反映出该操作随着输⼊规模的增加⽽变化的情况 第⼆章 递归算法 1.递归 若⼀个对象部分地包含它⾃⼰, 或⽤它⾃⼰给⾃⼰定义, 则称这个对象是递归的;若⼀个过程直接地或间接地调⽤⾃⼰, 则称这个过程是递归 的过程。 分为直接递归和间接递归 2.特点 (1)将问题分解成为形式上更加简单的⼦问题来进⾏求解,递归过程⼀般通过函数或⼦过程来实现 (2)问题求解规模缩⼩,把问题转化为规模缩⼩了的同类问题的⼦问题 (3)相邻两次重复之间有紧密的联系 (4)是否收敛,即终⽌条件 3.使⽤递归的三种情况 问题的定义 数据结构 问题求解的过程 4.递归模型 递归边界(递归的终⽌条件)和递归体 5.过程 先将整个问题划分为若⼲个⼦问题,通过分别求解⼦问题,最后获得整个问题的解。这种⾃上⽽下将问题分解、求解,再⾃下⽽上引⽤、合并,求 出最后解答的过程称为递归求解过程。这是⼀种分⽽治之的算法设计⽅法。 6.⼆分查找 7.阶乘: 8.斐波那契: 2的n次 9.汉诺塔: 2的n次 10.顺序表最⼤值: 11.辗转相除法 : 12.函数调⽤ 将返回地址、所有实参等信息传递给被调⽤函数保存 ; 为被调⽤函数的局部变量分配存储区; 将控制转移到被调⽤函数的⼊⼝。 13.函数返回 保存被调函数的计算结果; 释放被调函数保存局部变量的数据区; 依照被调函数保存的返回地址将控制转移到调⽤函数。 14.优点 结构清晰 程序易读 容易证明 15.缺点 时间效率低 空间开销⼤ 不容易优化 第三章分治策略 1.分治法 将其分解为k个规模较⼩的⼦问题,这些⼦问题互相独⽴且与原问题形式相同,递归地解这些⼦问题,然后将各⼦问题的解合并,得到原问 题的解 2.三个步骤 划分,解决,合并 3.采⽤平衡(balancing)⼦问题的思想 影响复杂性的主要因素:⼦问题个数,合并开销函数。 4.使⽤条件 (1)缩⼩规模可以解决 (2)具有最优⼦结构性质 (3)⼦问题解可以合并 (4)⼦问题相互独⽴ 5.⼆分搜索算法(logn): 6.合并排序(辅助空间O(n)) 7.快速排序优化:三平均分区 8.⼤整数乘法 快速傅利叶变换O(nlogn) 9.平⾯最接近点对问题 给定平⾯上n个点,在n个点组成的所有点对中,找出其中相互距离最⼩的⼀对点。 10.循环赛⽇程表 设有n=2k个运动员要进⾏⽻⽑球循环赛,现要设计⼀个满⾜以下要求的⽐赛⽇程表: (1)每个选⼿必须与其它n-1个选⼿各赛⼀次; (2)每个选⼿⼀天只能⽐赛⼀次; (3)循环赛⼀共需要进⾏n-1天。 可以看出就是不断将表翻转(根据中⼼点对称) 第

文档评论(0)

139****1921 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档