算法设计与分析复习要点(共5页).doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《算法设计与分析复习要点(共5页).doc》由会员分享,可在线阅读,更多相关《算法设计与分析复习要点(共5页).doc(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上算法设计与分析的复习要点第一章:算法问题求解基础算法是对特定问题求解步骤的一种描述,它是指令的有限序列。一算法的五个特征:1输入:算法有零个或多个输入量;2输出:算法至少产生一个输出量;3确定性:算法的每一条指令都有确切的定义,没有二义性;4可行性:算法的每一条指令必须足够基本,它们可以通过已经实现的基本运算执行有限次来实现;5有穷性:算法必须总能在执行有限步之后终止。二什么是算法?程序与算法的区别1笼统地说,算法是求解一类问题的任意一种特殊的方法;较严格地说,算法是对特定问题求解步骤的一种描述,它是指令的有限序列。2程序是算法用某种程序设计语言的具体实现;算法必须可
2、终止,程序却没有这一限制;即:程序可以不满足算法的第5个性质“有穷性”。三一个问题求解过程包括:理解问题、设计方案、实现方案、回顾复查。四系统生命周期或软件生命周期分为:开发期:分析、设计、编码、测试;运行期:维护。五算法描述方法:自然语言、流程图、伪代码、程序设计语言等。六算法分析:是指对算法的执行时间和所需空间的估算。算法的效率通过算法分析来确定。七递归定义:是一种直接或间接引用自身的定义方法。一个合法的递归定义包括两部分:基础情况和递归部分;基础情况:以直接形式明确列举新事物的若干简单对象;递归部分:有简单或较简单对象定义新对象的条件和方法八常见的程序正确性证明方法:1.归纳法:由基础情
3、况和归纳步骤组成。归纳法是证明递归算法正确性和进行算法分析的强有力工具;2.反证法。第二章:算法分析基础一会计算程序步的执行次数(如书中例题程序2-1,2-2,2-3的总程序步数的计算)。二会证明5个渐近记法。(如书中P22-25例2-1至例2-9)三会计算递推式的显式。(迭代法、代换法,主方法)四会用主定理求T(n)=aT(n/b)+f(n)。(主定理见P29,如例2-15至例2-18)五一个好的算法应具备的4个重要特征:1.正确性:算法的执行结果应当满足预先规定的功能和性能要求;2.简明性:算法应思路清晰、层次分明、容易理解、利于编码和调试;3.效率:算法应有效使用存储空间,并具有高的时间
4、效率;4.最优性:算法的执行时间已达到求解该类问题所需时间的下界。六影响程序运行时间的主要因素:1.程序所依赖的算法;2.问题规模和输入数据规模;3.计算机系统性能。七1.算法的时间复杂度:是指算法运行所需的时间;2.算法的空间复杂度:指算法运行所需的存储空间,包括固定空间需求和可变空间需求。固定空间需求主要包括:程序代码、常量、简单变量、定长成分的结构变量所占的空间;可变空间的大小与算法在某次执行中处理的特定数据的规模有关。八算法时间复杂度的分类:1.多项式时间算法:渐近时间复杂度有多项式时间限界的算法;2.指数时间算法:渐近时间复杂度为指数函数限界的算法3.常见的多项式时间算法的渐近时间复
5、杂度之间的关系:O(1)O(log n)O(n)O(nlog n)O(n2)O(n3)4.常见的指数时间算法的渐近时间复杂度之间的关系:O(2的n次方)O(n的阶乘)O(n的n次方)第五章:分治法一分治法的基本思想:1.将一个复杂的问题分解成若干个规模较小、相互独立,但类型相同的子问题求解;2.然后再将各子问题的解组合成原始问题的一个完整答案。(如快速排序算法,归并排序算法,二分搜索算法,汉诺塔问题都是用分治法求解的)二一个问题能够用分治法求解的要素或特征:1.问题能够按照某种方式分解成若干个规模较小,相互独立且与原问题类型相同的子问题;2.子问题足够小时可以直接求解;3.能够将子问题的解组合
6、成原问题的解。(自底向上逐步求出原理问题的解)分治法的设计思想:将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。三分治法所能解决的问题一般具有以下几个特征:1. 该问题的规模缩小到一定的程度就可以容易地解决;2. 该问题可以分解为若干个规模较小的相同问题;(大部分问题都能满足)3. 利用该问题分解出的子问题的解可以合并为该问题的解;(前提)(递归思想)4. 子问题之间不包含公共的子问题。(效率)四合并排序与快速排序的比较:1.分解过程:合并排序:将序列一分为二即可(简单)快速排序:需调用Paitition函数将一个序列划分为子序列。(分解方法相对较困难)2.子
7、问题解合并得到原问题解的过程:合并排序需要调用Merge函数(时间复杂度为O(n)来实现。快速排序一旦左右两个子序列都已分别排序,整个序列便自然成为有序序列。(异常简单,几乎无须额外的工作,省去了从子问题解合并得到原问题解的过程)3.掌握合并排序和快速排序的具体排序方法(数据结构内容)。(图5-2,图5-4快速排序的划分操作)第六章:贪心法一1.可行解:满足约束条件的解;2.最优解:使目标函数取得最大(或最小)值的可行解,它用来衡量可行解的好坏;3.贪心法是一种求解最优化问题的算法设计策略。4.贪心法的应用领域有:背包问题、最小代价生成树(Kruskal算法和Prim算法)、哈夫曼树、文件的最
8、佳合并树等;5.贪心法是通过分步决策的方法来求解问题的,贪心法每一步上用作决策依据的选择准则被称为最优量度标准(局部最优解);二可以用贪心法求解的问题一般具有两个重要性质:1.贪心选择性质:所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到;(这是贪心法和动态规划法的主要区别)2.最优子结构性质:一个问题的最优解包含其子问题的最优解(这是贪心法和动态规划算法的共同特征)三贪心算法的典型应用:背包问题(基本步骤):1.首先计算每种物品单位重量的价值pi/wi并按非增次序进行排序;2.然后依贪心选择策略,选择单位重量价值最高的物品装入背包;依此策略一直地进行下去,将尽可能多的物品全
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 设计 分析 复习 要点
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内