【问题标题】:Optimization: Minimize number of meetings优化:最小化会议次数
【发布时间】:2014-07-01 06:25:18
【问题描述】:

这是一道面试题

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

我的方法是选择结束时间最短的空乘人员。然后删除所有开始时间

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

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

【问题讨论】:

  • 请在问题上更具体一点;所以任何会议都可以到达在会议举行时正在工作的所有服务员?但是,对于您描述的算法,您对运行时复杂度的估计是正确的。
  • 如果您选择开始时间最早的空乘人员,并在此之前举行会议,您可以通过一次会议为他们提供服务。
  • @LasseV.Karlsen:请澄清。你刚刚反转了扫描的方向吗?这也可以,但不是您描述的方式。
  • 我想我误解了“工作时间”的意思,因为他们是空乘人员,他们不是在工作时间在飞行吗?我认为会议需要在飞行之外举行。

标签: algorithm optimization


【解决方案1】:

据我了解,所描述的算法通过以下论点产生最佳解决方案。修复实例及其最优解;修复一个工作周期的最早结束时间t;如果会议安排在t-1,那么早于t 开始的所有工作时段都可以由该会议服务,因此使用多个会议直到t 的任何最佳解决方案都可以得到改进。另一方面,必须至少有一次会议t-1,否则某些工作时段将无法服务。

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

【讨论】:

  • 感谢 Codor 的回答。
猜你喜欢
  • 1970-01-01
  • 2016-09-15
  • 2018-01-09
  • 1970-01-01
  • 2019-07-20
  • 2012-05-03
  • 2018-08-10
  • 1970-01-01
  • 2018-07-30
相关资源
最近更新 更多