【发布时间】:2013-11-08 02:31:22
【问题描述】:
给定一个时间间隔列表,我需要找到一组最大不重叠间隔。
例如,
如果我们有以下间隔:
[0600, 0830], [0800, 0900], [0900, 1100], [0900, 1130],
[1030, 1400], [1230, 1400]
还规定时间必须在[0000, 2400] 范围内。
最大不重叠的间隔集是[0600, 0830], [0900, 1130], [1230, 1400]。
我了解最大集包装是 NP-Complete。我想确认我的问题(间隔仅包含开始和结束时间)是否也是 NP-Complete。
如果是这样,有没有办法在指数时间内找到最佳解决方案,但需要更智能的预处理和修剪数据。或者如果有一个相对容易实现的固定参数易处理算法。我不想使用近似算法。
【问题讨论】:
-
“最大”是指间隔的最大个数还是间隔的最长总持续时间?您的示例解决方案是 3 个间隔,总持续时间为 6.5 小时。是什么让它最大,3 还是 6.5?