- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法设计与分析期末历年真题归纳总结
1. 贪心算法和动态规划算法有什么共同点和区别?它们都有那些优势和劣势?
共通点:动态规划和贪心算法都是一种递推算法 ,均有局部最优解来推导全局最优解
区别:贪心算法中,作出的每步贪心决策都无法改变,每一步的最优解一定包含上一步的
最优解,而上一部之前的最优解则不作保留。
动态优化算法,全局最优解中一定包含某个局部最优解,但不一定包含前一个局部最优解,
因此需要记录之前的所有最优解
动态规划算法利用子问题重叠性质,对每一个子问题只计算一次,将其解保存在一个表格中。
不同的子问题个数随着输入问题的规模呈多项式增长,因此,动态规划算法通常只需要多项式
时间,从而获得较高的解题效率。但它需要计算之前所有情况花费,更加耗费空间。
贪心算法所作的选择依赖于以往所作过的选择,但决不依赖于将来的选择,这使得算法在编 码
和执行过程中都有一定的速度优势。贪心算法是只是找局部最优解,不一定是全局最优解。
2. 试比较回溯法与分枝限界算法,分别谈谈这两个算法比较适合的问题?
二者都是在解空间树里搜索问题的可靠解或最优解,但是搜索的方式不同,回溯法采用深
度优先的方式,直到达到问题的一个可行解,或经判断沿此路径不会达到问题的可行解或最优
解时,停止向前搜索,并沿原路返回到该路径上最后一个还可扩展的节点,然后,从该节点出发
朝新的方向纵深搜索。分枝限界法采用的是宽度优先的方式,它将活节点存放在一个特殊 的
表中,其策略是,在扩展节点处,首先生成其所有的儿子节点,将那些导致不可行解或导致
非最优解的儿子节点舍弃,其余儿子节点加入活节点表中,然后,从活节点中取出一个节点作
为当前扩展节点,重复上述节点中扩展过程。可以看出,回溯法一般用于求问题的一个可行解,
而分枝限界可以用于求出问题的所有可行解。
3. 何谓最优化原理?采用动态规划算法必须满足的条件是什么?动态规划算法是通过什
么问题的什么特性提高效率的?
一个最优化策略的子策略总是最优的。一个问题满足最优化原理又称其具有最优子结构性质。
最优子结构性质,子问题重叠性质是计算模型采用动态规划算法求解的两个基本要素。
动态规划算法利用子问题重叠性质,对每一个子问题只计算一次,将其解保存在一个表格中。
不同的子问题个数随着输入问题的规模呈多项式增长,因此,动态规划算法通常只需要多项 式
时间,从而获得较高的解题效率
4. 什么是多项式时间算法?
若存在一个常数C,使得对于所有n=0,都有|f(n)| = C*|g(n)|,则称函数f(n)是O(g(n))。
时间复杂度是 O(p(n))的算法称为多项式时间算法,这里 p(n)是关于 n 的多项式。
时间复杂度为O(nlog(n))、O(n^3)的算法都是多项式时间算法,时间复杂度为O(n^log(n))、
O(n!)、O(2^n)的算法是指数时间算法。
一个优化问题如果已经找到了多项式时间算法,则称该问题为多项式时间可解问题,并
将这类问题的集合记为 P,因此多项式时间可解问题就称为 P 类问题。
5. 多项式时间确定性算法与多项式时间非确定性算法的主要区别是什么?
在算法计算复杂性的研究中,一个算法如果存在图灵机可计算的多项式时间计算复杂性算
法,就将这个算法归入 P 类,如果存在非确定性图灵机可计算的多项式时间计算复杂性算
法,就将其归入 NP 类
6. 陈述算法在最坏情况下的时间复杂度和平均时间复杂度;这两种评估算法复杂性的方法
各自有什么实际意义?
最坏时间复杂度式算法在最差情况下的时间复杂度,也就是花费时间最多的情况。平均时间
复杂度是因为它是期望的运行时间。它更有意义,现实中,平均运行时间很难通过分析得到,
一般都是通过运行一定数量的实验数据后估算而来的。而最坏运行时间是一种保证,那就是
运行时间不会再坏了。在应用中,这是最重要的需求,通常我们提到的运行时间都是最坏情
况下的运行时间,时间复杂度是最坏情况下的时间复杂度。
7. 在对算法进行复杂性分析时,强调渐进复杂性的意义是什么?
当问题的规模 n 趋向无穷大时,影响算法效率的重要因素是 T(n)的数量级,而其他因素仅
是使时间复杂度相差常数倍。使用渐进表达式可以略去低阶项所留下的主项,更加简单。
P11
8. 在对算法进行复杂性分析时,时间复杂度用什么量反映的?其间做了什么假定?复杂性
函数的渐进上界反映了复杂性函数的什么性质?
通常我们提到的运行时间都是最坏情况下的运行时间,时间复杂度是最坏情况下的时间复
杂度
我们假定 N 充分大,渐近上界也反映了复杂性函数在 N 充分大的情况
文档评论(0)