51mee - AI智能招聘平台Logo
模拟面试题目大全招聘中心会员专区

航空调度系统中,需优化航班起降顺序以减少跑道占用时间,给定航班起降时间表(如航班A在10:00起飞,B在10:15降落,C在10:20起飞),设计算法计算最优起降序列,最小化总等待时间。请说明问题建模、算法策略及时间复杂度。

中国航空集团软件开发岗位难度:困难

答案

1) 【一句话结论】:航班起降顺序优化以最小化总等待时间,采用贪心算法按航班降落时间升序排列,时间复杂度为O(n log n),能保证最优解(在最优性证明下)。

2) 【原理/概念讲解】:问题建模为每个航班i有降落时间a_i(到达跑道的时间)和起飞时间e_i(离开跑道的时间),占用时间t_i = e_i - a_i。总等待时间T = Σ max(0, 前一个航班离开时间 - a_i)。分析:当航班按降落时间升序排列时,相邻航班降落时间差最小,使得每个后续航班的等待时间尽可能短——因为降落时间早的航班先离开,减少后续航班的等待。类比:餐厅排队点餐,先到的先做,后面的人等待时间由前面的人做完时间决定,按到达时间排序能最小化总等待。

3) 【对比与适用场景】

策略定义特性使用场景注意点
按降落时间排序(贪心)航班按降落时间升序排列相邻降落时间差最小,总等待时间最小(最优性证明)标准航班起降调度,减少跑道占用仅适用于等待时间由降落时间决定的情况
按起飞时间排序航班按起飞时间升序排列可能导致后续航班等待时间增加特殊场景(如起飞有紧急任务优先级)不是最优,因为降落时间更关键,可能导致后续航班等待时间累积

4) 【示例】:假设航班数据:
航班A:降落时间9:50,起飞时间10:00(占用10分钟);
航班B:降落时间10:15,起飞时间10:45(占用30分钟);
航班C:起飞时间10:20,降落时间10:20(占用0分钟)。
按降落时间排序后顺序为A、B、C。
计算等待时间:

  • A:等待0,当前时间10:00;
  • B:等待 = max(0, 10:00+10-10:15)=5分钟,当前时间10:45;
  • C:等待 = max(0, 10:15+30-10:20)=25分钟,当前时间11:15。
    总等待时间 = 0+5+25=30分钟。
    若按起飞时间排序(A、C、B),顺序为A、C、B:
  • A等待0,当前时间10:00;
  • C等待0,当前时间10:20;
  • B等待 = max(0, 10:20+30-10:15)=35分钟,当前时间11:15。
    总等待时间=35分钟,验证按降落时间排序更优。

5) 【面试口播版答案】:面试官您好,这个问题属于调度优化中的最小化总等待时间问题。核心思路是采用贪心算法,按航班降落时间升序排列。因为降落时间越早的航班等待时间越短,这样可以减少后续航班的等待时间。具体步骤:首先,将所有航班按降落时间从小到大排序;然后,按排序后的顺序依次执行,计算每个航班的等待时间(当前时间 - 降落时间,当前时间为前一个航班的离开时间,取非负值),累加得到总等待时间。时间复杂度方面,排序需要O(n log n),后续遍历是O(n),所以整体时间复杂度为O(n log n)。比如给定航班A(10:00起飞,降落时间9:50)、B(10:15降落)、C(10:20起飞),按降落时间排序后顺序为A、B、C,计算等待时间:A等待0,B等待=10:10-10:15=5分钟,C等待=10:45-10:20=25分钟,总等待时间30分钟,比其他顺序更优。

6) 【追问清单】

  • 问:如果存在紧急航班(优先级更高),如何调整算法?答:在排序时加入优先级因子,比如按(降落时间 + 优先级权重)排序,优先级高的航班排在前面,或者使用优先队列维护待处理航班。
  • 问:如何处理多跑道的情况?答:将问题扩展为作业车间调度,核心是先按降落时间排序,再分配跑道,比如采用优先级调度或最短作业优先(SPT),根据跑道数量动态分配,计算每个跑道的总等待时间。
  • 问:时间复杂度是否可以优化?答:对于大规模航班,排序是主要复杂度,但可以用堆优化为O(n log k),不过通常排序足够高效,因为航班数量n通常不大(如机场每小时几十架)。
  • 问:如果航班占用时间不同,算法是否仍适用?答:算法仍适用,因为等待时间由降落时间决定,占用时间不同不影响排序逻辑,只是计算等待时间时考虑占用时间,比如后续航班等待时间 = max(0, 前一个航班离开时间 - 当前航班降落时间)。

7) 【常见坑/雷区】

  • 等待时间计算错误:错误计算为起飞时间 - 降落时间,而非队列中的等待时间(前一个离开时间与当前降落时间的差值)。
  • 排序逻辑错误:没有解释为什么按降落时间排序最优,直接说排序,缺乏最优性证明。
  • 多跑道处理遗漏:没有说明如何分配跑道,比如作业车间调度中的具体步骤。
  • 优先级实现细节:仅说加入优先级因子,未说明具体方法(如加权排序、优先队列)。
  • 复杂度分析不严谨:认为时间复杂度是O(n²),忽略排序的O(n log n)。
51mee.com致力于为招聘者提供最新、最全的招聘信息。AI智能解析岗位要求,聚合全网优质机会。
产品招聘中心面经会员专区简历解析Resume API
联系我们南京浅度求索科技有限公司admin@51mee.com
联系客服
51mee客服微信二维码 - 扫码添加客服获取帮助
© 2025 南京浅度求索科技有限公司. All rights reserved.
公安备案图标苏公网安备32010602012192号苏ICP备2025178433号-1