区间调度-贪心算法

一、  找到数目尽可能多的相容任务

假设每个任务j从sj开始到fj结束。若要找到尽可能多的相容任务,只需要将所有任务按照结束时间排序,每次都选择最早结束的那个任务。

因为每次选最早结束的,则留给之后的时间就越多。在余下的时间中与被选的那个任务冲突的任务最多也只能有一个被选(代替现在被选的这个任务),但是留下的时间却更少了,所以一定没有现在这个选法优。


二、 区间划分问题

假设有好多个演讲在不同的时间进行,可能会导致冲突,请你选择用最少的教室来避免冲突。

我们定义“深度”这个概念:通过时间线上任何一点的最大区间数。   就是说重合区间的最大个数。由于重合的区间必然不能安排在一个教室,所以安排的教室数必然不小于区间集合的深度。

那么,安排的算法如下:

假设区间集合的深度为d,有1,2...d个标签。

先将所有区间按照开始时间排序,为  I1 I2 I3 ... In  。由深度的定义可以知道每个区间最终一定会被分配一个标签,否则说明这个区间至少和d个区间冲突了,那么这个深度也就不是d了。分配的策略为:
按照顺序1到n,对每一个区间Ii 为它分配的标签号不与和它冲突的区间的标签号想同即可。(所以分配的方法也就不唯一)。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值