习题编号以第三版为准。
#16.1-3 失败的贪心算法
对于活动选择问题,并不是所有贪心方法都能得到最大兼容活动子集。请举例说明,每次选择时间最短者,或最早开始者,或重叠的活动数量最小者,均不能得到最优解。
解:如图所示。(a)最早开始 (b)时间最短 (c)重叠最少。图片来自Algorithm Design chapter 4.1 by Kleinberg
#16.1-4 区间图着色问题
使用最少的教室完成所有活动。用顶点表示活动,不兼容的活动之间有一条边。使用最少的颜色对顶点着色,使得任意边的两端颜色均不相同。(interval-graph color problem)
解:见Algorithm Design by Kleinberg 4.1节最后。思考:容易将活动问题转化为顶点着色问题,如何将顶点着色转化成活动问题?因为顶点上并没有时间顺序。
#16.1-5 带权重的活动选择问题
每个活动a[i]除了起止时间,还有一个价值v[i]。求价值最大的兼容活动子集,要求多项式时间。
解:参考课本中对原始问题的讨论,令S[i,j]表示在活动a[i]结束之后开始,且在a[j]开始之前结束的那些活动

本文详细解答了《算法导论》第16章的多个习题,涉及活动选择、区间图着色、带权重的活动选择、分数背包、最大乘积、前缀码表示和霍夫曼编码等问题,通过实例和动态规划等方法阐述了贪心算法的应用和局限。
最低0.47元/天 解锁文章
1022

被折叠的 条评论
为什么被折叠?



