贪婪地删除大多数冲突的间隔是否解决了区间调度?

时间:2014-04-05 21:38:01

标签: algorithm

我们可以解决调度问题,我们必须使用贪婪算法选择不重叠的最大连续区间集合:我们只是选择最早结束的区间:http://en.wikipedia.org/wiki/Interval_scheduling

显然,贪婪地挑选最少冲突的间隔是行不通的。

我想知道是否将所有间隔放在一个大集合中,然后贪婪地删除剩余最多冲突的间隔(直到间隔没有冲突)。我可以设想使用优先级队列来实现这个贪婪算法:每当我们从优先级队列中删除具有最大冲突的间隔X时,我们更新过去与间隔X冲突的其他间隔,以便其他间隔现在被标记为具有1减少冲突。

这有用吗?我试图想出一个反例来反驳它并且不能。

1 个答案:

答案 0 :(得分:5)

这是一个反例。 这个想法是在第一个选择上放下一个必要的间隔。 冲突的数量在右边。

        ====    2
       ----     3
      ----      3
    ====        4
  ----          3
 ----           3
====            2

显然,我们希望选择三个粗体(====)间隔并删除四个细长(----)间隔。 没有其他方法可以获得三个不相交的区间。

顺便说一句,你可能会发现关于贪婪问题的TopCoder tutorial很有意思,因为它首先讨论了同一问题的几种方法。

相关问题