什么是最好的预留座位排序算法?

时间:2011-03-15 19:46:49

标签: algorithm sorting matlab permutation

我正在尝试为以下排序问题找到最佳算法。

在礼堂中有 N = K×M 座位,每个过道有一个过道, K 行, M 座位。假设 K 大于 M ,但我不认为这非常重要。有 N 的人在 与座位(指定席位)的双向投射。假设人们没有 比如等待,是什么是最快的方式来排队让他们全部 在他们的座位上尽快?

我运行了一些简单的实验(使用随机排列)和它 似乎让他们随机排队比拥有他们更快 然后,前三分之一(沿着过道向下)的人排队 中间三分之一,然后是后三分之一。这对我来说似乎不对。

如果重要的话,我在MatLab中写这个。有什么想法或答案吗?

1 个答案:

答案 0 :(得分:13)

有一篇非常好的文章,由Bachmat,Berend,Sapir,Skiena和Stolyarov撰写,标题为Analysis of airplane boarding via space-time geometry and random matrix theory,用于模拟飞机登机的确切问题。从他们的摘要:

  

我们表明飞机登机可以   渐近建模   二维洛伦兹几何。   登机时间由最大值给出   模型中曲线之间的适当时间。   模型和模型之间的差异   仿真结果密切相关   随机矩阵理论。然后我们展示   如何用这些模型来解释   为什么一些常见的航空公司   寄宿政策是无效的   甚至是有害的。

该论文的结论是:

  • BEST:Window-Middle-Aisle
  • NEAR OPTIMAL:随机登机
  • 非常糟糕:从前到后

对于您的设置,我认为这意味着您应该忽略过道走多远,而是专注于离过道的距离。此型号还可以计算存放行李的时间,因此您可能需要根据具体情况进行调整。无论如何,我认为这证实了你通过模型找到了什么。