算法分析与设计(线下作业二)
- 格式:doc
- 大小:66.00 KB
- 文档页数:6
《算法分析与设计》
学习中心:
专业:
学号:
姓名:
作业练习二
一、名词解释
1、MST性质
2、子问题的重叠性质
递归算法求解问题时,每次产生的子问题并不总是新问题,有些子问题被反复计算多次,这种性质称为子问题的重叠性质。
二、简答题
1、简述动态规划算法求解的基本要素。
答:动态规划算法求解的基本要素包括:
1)最优子结构是问题能用动态规划算法求解的前提;
2)动态规划算法,对每一个子问题只解一次,而后将其解保存在一个表格中,当再次需要解此子问题时,只是简单地用常数时间查看一下结果,即重叠子问题。
2、备忘录方法和动态规划算法相比有何异同简述之。
答:备忘录方法是动态规划算法的变形。与动态规划算法一样,备忘录方法用表格保存已解决的子问题的答案,在下次需要解此问题时,只要简单地查看该子问题的解答,而不必重新计算。备忘录方法与动态规划算法不同的是,备忘录方法的递归方式是自顶向下的,而动态规划算法则是自底向上递归的。因此,备忘录方法的控制结构与直接递归方法的控制结构相同,区别在于备忘录方法为每个解过的子问题建立了备忘录以备需要时查看,避免了相同的子问题的重复求解,而直接递归方法没有此功能。
3、贪心算法求解的问题主要具有哪些性质简述之。
答:贪心算法求解的问题一般具有二个重要的性质:
一是贪心选择性质,这是贪心算法可行的第一个基本要素;
另一个是最优子结构性质,问题的最优子结构性质是该问题可用贪心算法求解的关键特征。
三、算法编写及算法应用分析题
1、设计求解如下最大子段和问题的动态规划算法。只需给出其递推计算公式即可。
最大子段和问题:给定由n 个整数(可能为负整数)组成的序列a1a2 … an,求该序列形如Σi≤k≤j ak的子段和的最大值。当所有整数均为负整数时定义其最大子段和为0。依次定义,所求的最优值为max{0, max1≤i≤j≤n Σi≤k≤j ak }。
2、关于多段图问题。设G =(V ,E)是一个赋权有向图,其顶点集V 被划分成k>2个不相交的子集V i :1i k ≤≤,其中,V 1和V k 分别只有一个顶点s (称为源)和一个顶点t (称为汇),图中所有的边(u,v ),i u V ∈,1i v V +∈。求由s 到t 的最小成本路径。
① 给出使用动态规划算法求解多段图问题的基本思想。 ② 使用上述方法求解如下多段图问题。
s t
V1V2V3V4V5
3、最优二元归并问题:已知将两个分别包含a 个和b 个记录的已分类文件归并在一起得到一个分类文件需作a+b 次记录移动。现有n 个已分类文件F1,F1,⋯,Fn,它们的记录个数分别为l1, l2,⋯, ln。现在考虑使用二元归并模式将这n 个文件归并成一个分类文件,要求记录移动次数最少。设计一个贪心算法来求解一种最优的二元归并(即记录移动次数最少的二元归并)。
4、带限期的作业调度问题:n 个作业需要在一台机器上处理,每个作业可在单位时间内完
成。每个作业i 都有一个截止期限di>0(di 为整数),当且仅当作业i 在它的截止期限之前被完成,获得pi>0 的效益。一种可行的调度方案为n 个作业的一个子集J,其中J 中的每个作业都能在各自的截止期限内完成。该可行调度方案的效益是J 中作业的效益之和。试设计贪心算法求效益最大的可行调度方案(即最优调度方案)。