计算机算法设计与分析期末复习资料
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一填空题(20x1=20分)
1.当设定的问题有多种算法去解决时,其选择算法的主要原则是选择其中复杂性最低者。
2.用函数自身给出定义的函数是一种递归函数。
3.动态规划算法适用于解最优化问题。
4.贪心算法的两个基本要素是最优子结构性质、贪心选择性质。
5.回溯法在搜索解空间树的时候,为了避免无效搜索,通常使用深度优先手段来提高搜索
效率。
6.依据求解目标的不同,分支界限法和回溯法分别用广度优先遍历或者最小耗费优先、深
度优先的方式搜索解空间树。
7.分支界限法和回溯法主要区别在于求解目标和搜索方式不同。
8.在分支界限法实现的时候,通常采用方式来实现最大优先队列。
9.依据求解所花费的时间和所得到的结果不同,随机化算法大致分为数值随机化算法、蒙
特卡罗算法、拉斯维加斯算法和舍伍德算法四类。
10.产生伪随机数最常用的方法是线性同余法。
11.线性规划算法中转轴变化的目的是将入基变量与离基变量互调位置。
12.最大网络流问题中可增广路是残留网络中一条容量大于0的路。
13.待解决问题适用于动态规划法的两个基本要素是。
14.算法必须满足的四个特征是输入、输出、确定性、有限性。
15.算法复杂性依赖于、、三个方面的复杂因素。
16.实现递归调用的关键是
17.动态规划算法求解问题的重要线索是问题的性质。
18.最优子结构性质是贪心算法求解问题的关键特征。
19.分支界限法的求解目标是找出满足约束条件的一个解,或是在满足约束条件的解中找出
在某种意义下的最优解。
20.问题的解空间树常见的有子集树、排列树两种类型。
21.分支界限算法依据其从和节点表中选择获得下一扩展节点的不同方式被分为
22.对于任何约束标准型线性规划问题,只要将所用分基本变量都设置为0,就可以获得一
个解。
二判断题(20x1=20分)
1.算法的描述方式有自然语言、程序语言,或者两者相结合的形式。()
2.算法满足的特性有哪些,程序有什么特征,而这有什么关系。
3.算法复杂度越高或者越低与占用计算机资源的关系是什么。
4.算法复杂性上界的阶,越高或者越低与结果的准确性和实际价值关系。
5.递归算法和非递归算法两者之间的效率如何。
6.动态规划算法带求解的问题是否可以用分支界限法、分治法、线性规划法、回溯法等其
他的算法求解。
7.动态规划算法带求解的问题,经分解得到的子问题,是独立的还是不独立的。
8.如果问题具有最优子结构性质,请问这个问题使用动态规划法和贪心算法那个更好。
9.贪心算法在一般情况下,是否能够得到整体最优解,还是最优解的近似值。
10.动态规划法和贪心算法,在求解问题的时候都是自顶向下的吗?
11.请问对于待解决的问题,有“通用解题法”之称的是什么算法?回溯法
12.回溯法是通过遍历搜索树找到问题的最优解的吗?
13.在分支界限法和回溯法中,每个节点都有机会成为扩展节点吗?
14.对于待解决的同一个问题,随机化算法与非随机化算法,谁的复杂度高?谁的复杂度
低?
15.数值化随机算法用于求解问题的准确解吗?
16.蒙特卡罗算法是用于球问题的准确解还是近似解,并且得到的解,一定是可靠的吗?
17.舍伍德算法能够得到问题的准确解吗?
18.二分搜索算法是那种算法的一种典型实例?分治法
19.矩阵连乘问题,最实用的算法是什么?
20.程序必须满足算法的所有属性吗?
21.算法复杂性与计算机的本身资源有关吗?
22.算法描述的方式除了自然语言、程序语言
23.算法复杂性的阶越高越好吗?
24.动态规划法和分治法一定要把求解的问题分解成为若干个子问题吗?
25.如果问题具有最优子结构性质,贪心算法比其他的算法都要好吗?
三概念题(6x2=12分)
1.算法复杂性:是算法运行所需要的计算机资源的量,需要时间资源的量称为时间复杂性,
需要空间资源的量称为空间复杂性。
2.递归算法:直接或间接地调用自身的算法称为递归算法。
3.贪心算法:在对问题求解时,总是做出当前看来是最好的选择。也就是说,贪心算法并
不从整体最优考虑,他所做出的选择只是在某种意义上的局部最优选择。贪心算法不能对所有问题都得到整体最优解,但对范围相当广泛的许多问题他能产生整体最优解或者是整体最优解的近似解。
4.子集树:当所给问题是从n个元素的集合s中找出满足某种性质的子集时,相应的解空
间树称为子集树。
5.队列式(FIFO)分支限界法:将活结点表组织成一个队列,并按队列的先进先出原则选
取下一个结点为当前扩展结点。
6.分治法:将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击
破,分而治之。
7.算法:由若干条指令组成的有穷序列。
8.最优子结构:当一个问题的最优解包含了其子问题的最优解时,称该问题具有最优子结
构性质。
9.回溯法:以深度优先方式系统搜索问题解的算法称为回溯法。
10.排列树:当所给的问题是确定n个元素满足某种性质的排列时,相应的解空间树称为排
列树。
11.网络流:是定义在网络的边集合E上的一个非负函数flow = {flow(v,w)},并称flow(v,w)
为边(v,w)上的流量。
四简答题(3x4=12分)
1.在一个算法中调用另一个算法时,系统需在运行被调用算法之前完成哪些工作?同时从
被调用算法返回调用算法需完成哪些工作?
答:在一个算法中调用另一算法时,系统需在运行被调用算法之前先完成三件事:
(1)将所有实参指针、返回地址等信息传递给被调用算法;
(2)为被调用算法的局部变量分配存储区;
(3)将控制转移到被调用算法的入口。
在从被调用算法返回调用算法时需完成三件事:
(1)保存被调用算法的计算结果;
(2)释放分配给被调用算法的数据区;
(3)依照被调用算法保存的返回地址将控制转移到调用算法。
2.动态规划算法求解问题的步骤?
答:动态规划法适用于解最优化问题。通常可以按以下4个步骤设计:
(1)找出最优解的性质,并刻画其结构特征;
(2)递归地定义最优值;
(3)以自底向上的方式计算最优值;