我正在为学校目的制定时间表。我收到按时间排序的事件列表,我的目标是在时间轴上绘制它们。问题是某些事件与另一事件重叠(如下图所示)。我想要做的是将这些事件“打包”到尽可能小的空间。 This is single day with overlapping events.
第一张图片展示了我到目前为止所做的工作。如图所示,矩形彼此不相交并很好地填充自由空间。但我没有设法提出合理的订购算法。Second picture shows how events should be ordered.
这是两个条件,这使得这个问题与传统的包装问题不同:
答案 0 :(得分:0)
这个问题让我想起了一点文件系统碎片问题。简单的解决方案是实现一种着名的算法,例如首先适合或最适合。
但我想你想要最好的解决方案。这就是我建议实施backtracking algorithm的原因。请注意,我可以导致长时间运行,但我认为这在您的环境中并不重要。