给定n
讲座,每个讲座都有开始时间和结束时间,问题是将所有讲座分配到房间,使得在同一房间内不会同时发生两个讲座。设计一种贪婪算法很容易,该算法按开始时间对讲座进行排序,以最大限度地减少使用的房间数量。如果我们按照完成时间处理讲座怎么办?贪心算法是否仍然有效?我尝试了几个例子,但还没有找到反例。
开始时间的贪婪算法
按开始时间按升序对所有讲座进行排序
将所有已用房间放在优先级队列中。房间的优先级取决于会议室最后一次演讲的结束时间。
将每个讲座分配到队列中的第一个可用房间。如果在会议室安排的最后一次讲座的结束时间小于当前讲座的开始时间(没有重叠),则可以使用一个房间。
如果队列中没有房间可用,请添加一个新房间,然后将讲座插入新房间。
以上贪婪算法有效。如果我们更改步骤1,按完成时间排序讲座,并保持其他步骤相同,该怎么办?它还能用吗?
如果我们按完成时间降序排序,也就是说,我们会先处理上一课,这是上述贪心算法的对称,我相信它绝对有用。
但我的问题是,我们按完成时间按升序排序,应用贪婪算法,是否有效?