Interval Scheduling 问题描述:已知n个工作的开始时间和结束时间,求一个工作的子集,使得子集内的工作时间不重叠,且子集包含的工作个数最多。
Idea: 贪心算法,在时间不重叠的前提下,每一步找到最早结束的工作。(证明)
算法如下:
Weighted Interval Scheduling 问题描述:已知n个工作的开始时间,结束时间和权重 (weight),求一个工作的子集,使得子集内的工作时间不重叠,且子集的权重和最大。
Idea: 动态规划 (Dynamic Programming)
讨论至此,这个问题的算法也相当显然了,在此不赘述。
- 这篇英文参考文章详细地讨论了这两个问题的算法,包括算法思想和复杂度,并给出了python代码以供参考:Weighted Interval Scheduling
网友评论