背景
(如果您只关心算法,请跳过此步骤)
在我工作的大学里,我们系最大的麻烦之一就是课堂安排。出于说明目的和列出问题的范围,我们现在进行调度的方式如下:
- 教授给我们列出了他们正在教授的课程以及他们希望教授的时间段,按优先级排序(最想要到最不想要)。
- 行政部门向我们提供了我们可以分配的房间列表以及这些房间可供我们部门使用的时间。
- 我们开始将教授分配到房间,试图(起初)考虑到各个教授的偏好。
- 不可避免地,冲突出现了,教授们开始要求改变,计划在 30 号教授左右的某个地方分崩离析,此时我们基本上开始分配房间,只要我们能把它们放在哪里,到处都是皱巴巴的纸片,没有人高兴。(如果你想知道为什么你的课是在星期四早上 9.30 上课,但每隔一天下午 4 点上课,现在你知道了)
我被要求悄悄地调查软件是否可以更优化地做到这一点。
实际问题
是否有一种算法可以有效地调度一组资源,以满足以下标准:
- 该算法绝不能同时将两名教授分配到同一个房间。
- 直到每个教授都被分配了一个房间/时间,该任务才完成。
- 该算法不必担心有太多教授来满足可用时隙的数量。(我们的资金并不充足。)
- 该算法应尽可能尊重个别教授的调度偏好。
我觉得我不能成为第一个问这个的人。有没有一种有效的算法,或者这种问题只能被暴力破解?