优化:尽量减少会议次数

时间:2014-07-01 06:25:19

标签: algorithm optimization

这是一个面试问题

  

有一家航空公司希望为其所有航班提供新的更新       服务员通过会议。每个第i名空乘人员从一开始就有工作时间       时间i (si)到结束时间i (ei)。设计一种最小化数量的算法       公司必须举行的会议。

我的方法是挑选一名结束时间最短的空乘人员。然后删除所有那些开始时间< =此结束时间的服务员(因为他们已经知道会议的更新)。继续,直到没有更多的空乘人员选择。航空公司应该在我选择的服务员结束时召开会议。

这是正确的做法吗?如果是这样,如何证明其正确性。

我认为复杂度为O(n log n),因为我将首先按结束时间的升序对列表进行排序,然后浏览列表一次。

1 个答案:

答案 0 :(得分:3)

据我所知,所描述的算法通过以下参数产生最优解。修复实例及其最佳解决方案;确定工作期间的最早结束时间t;如果会议安排在t-1,则此会议可以提供早于t开始的所有工作时段,因此使用多达t次会议的任何最佳解决方案都可以得到改善。另一方面,必须至少召开一次会议t-1,否则无法提供一些工作时间。

删除服务工作时间后,我们获得了同一问题的较小实例。通过迭代使用上述参数,可以获得最少数量的会议。