时间表活动打包

时间:2016-10-09 14:29:31

标签: javascript packing timetable

我正在为学校目的制定时间表。我收到按时间排序的事件列表,我的目标是在时间轴上绘制它们。问题是某些事件与另一事件重叠(如下图所示)。我想要做的是将这些事件“打包”到尽可能小的空间。 This is single day with overlapping events.

第一张图片展示了我到目前为止所做的工作。如图所示,矩形彼此不相交并很好地填充自由空间。但我没有设法提出合理的订购算法。Second picture shows how events should be ordered.

这是两个条件,这使得这个问题与传统的包装问题不同:

  1. 事件已给出x坐标(由开头和结尾定义)。
  2. 事件有固定的宽度,高度是任意的。

1 个答案:

答案 0 :(得分:0)

这个问题让我想起了一点文件系统碎片问题。简单的解决方案是实现一种着名的算法,例如首先适合或最适合。

但我想你想要最好的解决方案。这就是我建议实施backtracking algorithm的原因。请注意,我可以导致长时间运行,但我认为这在您的环境中并不重要。