2020-2021中科院陈玉福算法设计与分析期末考试
中科院 时文康 于2020.12.31
一、(20 分)简答题
1,陈述算法在最坏时间下的时间复杂度和平均时间复杂度;这两种评估算法复杂性的方法各自有什么意义?
答:最坏情况下的时间复杂度称之为最坏时间复杂度,一般不特别说明,讨论的时间复杂度均是最坏情况下的时间复杂度。
这样做的原因是:最坏情况下的时间复杂度是算法在任何输入实例上运行时间的上界,这就保证了算法的运行时间不会比任何更长。
平均时间复杂度是指所有可能的输入实例均以同等概率出现的情况下,算法的期望运行时间。
2,阐述动态规划算法与贪心算法的区别,他们都有哪些优势和劣势?
答:动态规划算法与贪心算法都要求具有最优子结构性质,这是二者的一个共同点。
动态规划与分治法和贪心算法类似,它也是将原问题分解成为若干个更小的,相似的子问题,并通过求解子问题产生一个全局最优解,与分治法和贪心法的不足在于:
使用贪心算法时,当前要做的选择可能要依赖于之前已经作出的所有选择,但不依赖于有待于作出的选择以及子问题。因此,贪心算法是自顶向下(即从起点到终点),一步一步的作出贪心选择。当然,如果当前的选择可能要依赖于子问题的解时,则难以通过局部的贪心策略达到全局最优解。
使用分治算法的时候,原问题分解出各相互独立的子问题,即不包含公共的子问题,因此,一旦递归地求出各个子问题的解后,便可以自下向上的将各个子问题的解合并成原问题的解。如果,各个子问题不相互独立,则分治算法要作出许多不必要的工作,重复的求解公共的子问题。
动态规划允许由原问题分解出的问题之间的相互依赖,每一个子问题只求解一次,并将结果保存起来,再碰到此问题就不需要重复计算。
3,阐述回溯算法与分支限界算法的共同点和不同点,提高算法效率的关键是什么?
答:回溯法与分治限界法的联系在于所求解的目标,即回溯法以深度优先的方式搜索解空间树,求解目标是找出解空间树中满足约束条件的所有解,故回溯法更适用于寻找所有可行解的问题。回溯法主要强调如何组织解空间的结构来提高求解效率,同时也利用约束函数和限界函数来避免无效的搜索,从而提高效率。
而分治限界法以广度优先或是以最小耗费优先的方式搜索解空间树,求解目标是找出满足约束条件的一个解,因此它更适用于处理求最优解的问题,主要强调利用约束函数,限界函数和优先级函数来提高效率;
4.分支界限的约束函数、限界函数、优先级函数分别起到什么作用?
二、(20 分)用动态规划算法解如下图示的多段图问题
1.说明多段图问题具有最优子结构性质
答:设一个多段图有且仅有一个起点 S,有且仅有一个终点 T。S->S1->S2->…Sn->T 为从起点 S 到终点 T 的最短路径,设 S->S1 的开销已经求出。则从起点 S 到终点 T 的最小开销的求解将转换为对点 S1 到终点 T 的最小开销进行求解。
假设 S1->S2->S3…Sn->T 不是点 S1 到终点 T 的最短路径,则必然存在另一条路径 S1->R1->R2…Rn->T 的开销更小,即起点 S 到终点 T 的最短路径为 S->S1->R1->R2…Rn->T。
然而已知路径 S->S1->S2->…Sn->T 为起点 S 到终点 T 的最短路径,不可能存在其他路径的总开销比该路径的开销还要小,产生了矛盾,因此多段图的最短路径问题满足最优子结构。
2.写出多段图问题最优值的递推公式
3.给出问题的一个最优解并在图上标注说明
三.(25 分)用 LC-分枝限界算法求解 0/1 背包问题: ,物品重量和价值分别是:w=(2,3,6,9) p=(8,9,12,18) M=12
1.画出由算法生成的状态空间树,并标明各节点的优先级的值;
2.给出各节点被选作当前扩展节点的先后次序;
3.给出最优解。
(真题给的数字是除不尽的)
四.(20分)证明题
五.(15分)AC4和打破对称