加权区间调度问题详解

本文详细介绍了加权区间调度问题,即求解最大加权独立集,通过动态规划解决区间冲突,以达到权值最大化。文章讨论了问题的递推模型,并给出部分代码实现。此外,还探讨了问题的图论转化,将其转化为求最大加权独立集的NP问题。
摘要由CSDN通过智能技术生成

题目要求:

    求区间图的最大加权独立集。(选择一部分互不重叠的区间,使得被选出来的区间权重之和最大)


                                               

                                                                                                          图一

题目分析:

这类问题可以归结为区间调度问题,这是其中最普通的一类,即加权最大区间调度问题,其求解思路可以通过求最多区间调度(贪婪算法dp[i-1] = dp[i]),无权最大区间(权值为1的动态规划)依次发展过来,其具体思路分析详见http://blog.csdn.net/yutianzuijin/article/details/45116705#。我也从博客中转载了这篇文章,http://blog.csdn.net/lukas_sun/article/details/53770959。向原作者致敬!

 

题目求解:

求解最大权值区间的必要条件就是各最优区间互不冲突,这是这类调度问题共同的影子,只不过它的目标是让各区间的权值和最大。

和所有这种规划问题相同,我们需要对所有区间进行排序,排序原则为结束时间的先后,因为用开始时间排序无法得到各区间明确界限。

首先规定几个记号

O(j): 需求区间{ 1……j }的最优解集

p ( n ): 最大的满足不与第n个区间冲突的区间号

OPT( j ): O( j )的最优解值。

由此定义可以分析得到第p(n)+1, p(n)+2 ,p(n)+3…………n-1个区间都与第n个区间冲突,所以O一定包含对需求区间{1,……p(n)}的最优解(否则可以将其替换成最优解而不影响需求区间n),由于p(n) <= n-1,所以如果n不包含在O里,则其可以转化为对需求区间 {1……n-1}的求解。

则我们的递推模型可以以是否选择第j个区间为构造依据。


按照此递推公式可知求解过程:

OPT(3)= 3 (2,3)

OPT(5)= 5+OPT(0)=

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值