准备一份时间表,以便在最短的时间内教授所有课程

时间:2017-06-10 05:21:53

标签: algorithm graph-theory graph-algorithm puzzle

我遇到一个面试问题:
有一些教授,一些课程和一些学生 每位教授只能教一门课程 每门课程都有固定的持续时间(例如10周) 对于每位教授,您都会获得时间表(按周计算) 每个学生都有他想要学习的课程清单 可以只有1:1的课程,即1名教授只能教一个学生。 学生一次只能参加一门课程。 教授必须一次完成一门课程的教学。

您的目标是准备一份时间表,以便在最短的时间内教授所有课程 我的方法:我提到过这将通过图论来解决。就像从教师到课程或老师到学生一样,有一个直接的边缘。但我无法完全解决它。
我的方法是正确的还是DP问题?
 伪代码或算法建议?

2 个答案:

答案 0 :(得分:0)

询问您的问题是schedulling problem,这是一个动态编程问题。特别地,您的问题是通常称为 FJm | brkdwn,pj = 10 | Cmax 的情况,其含义如下:

  • 有m台机器(教授)可以独立且以任何顺序处理作业的一部分(此处,作业是学生的全部教学)。某些机器可能会处理作业的同一部分(同一过程)
  • 机器无法持续使用
  • 部分工作(课程)的持续时间为10周
  • 您要最大程度地减少所有作业的完成时间

有一些针对调度问题进行了优化的求解器,但是我不确定是否将您的问题建模为调度问题,并通过一个有问题的求解器来解决,这正是您的求职面试者想要的。

答案 1 :(得分:0)

这类似于m色问题。除了这里,我们被要求返回最小值m。不幸的是,这是一个NP难题。 对于给定的问题,如果存在普通学生或教授相同,则将课程视为顶点和边b / w 2顶点。 现在,首先使用Welsh–Powell Algorithm找到m的上限(需要最少的颜色),然后我们可以进行二进制搜索以找到哪个是我们可以着色的 m 的最小值。使用Graph Coloring

的所有顶点(没有2个具有相同颜色的相邻顶点)