- 1、本文档共36页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)