国科大计算机算法设计与分析陈玉福,中科院陈玉福计算机算法设计与分析期末简答题答案.pdf...

中科院陈玉福计算机算法设计与分析期末简答题答案

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 充分大的情况下复杂性的上界

9. 什么是NPC 问题?证明一个问题是NPC 问题一般采用哪几个步骤?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值