间隔调度的不同版本

时间:2016-09-26 15:18:58

标签: math

给定n个区间和数k,给出一个算法来找到区间的maxmium子集,使得多于k个区域中不包含任何点? 我们知道当k = 1时,这个问题可以通过贪心算法来解决。所以我一直在尝试为上述问题开发一种贪心算法。

1 个答案:

答案 0 :(得分:0)

我接近这个的方法是首先获得所有区间的所有边界的集合,并对该集合进行排序。这可能是最多n * 2点x_i的集合。然后考虑集合S_i = [x_i,x_ {i + 1}]。每个起始区间都包含S_i或不相交。因此,对于每个S_i,我们可以构建包含该集合的所有区间的索引的列表T_i。因此,间隔1,2,5与集合S_1相交,而不是T_1 = {1,3,5}。

我们现在有一组集T_i,并且问题减少到找到最小的指标集M,使得T_i union M对于每个T_i具有最多k个元素。我们可以通过丢弃以少于k个项开头的T_i来稍微简化问题。

递归算法应该能够通过可能的集合M进行贪婪搜索。

相关问题