我遇到一个面试问题:
有一些教授,一些课程和一些学生
每位教授只能教一门课程
每门课程都有固定的持续时间(例如10周)
对于每位教授,您都会获得时间表(按周计算)
每个学生都有他想要学习的课程清单
可以只有1:1的课程,即1名教授只能教一个学生。
学生一次只能参加一门课程。
教授必须一次完成一门课程的教学。
您的目标是准备一份时间表,以便在最短的时间内教授所有课程
我的方法:我提到过这将通过图论来解决。就像从教师到课程或老师到学生一样,有一个直接的边缘。但我无法完全解决它。
我的方法是正确的还是DP问题?
伪代码或算法建议?
答案 0 :(得分:0)
询问您的问题是schedulling problem,这是一个动态编程问题。特别地,您的问题是通常称为 FJm | brkdwn,pj = 10 | Cmax 的情况,其含义如下:
有一些针对调度问题进行了优化的求解器,但是我不确定是否将您的问题建模为调度问题,并通过一个有问题的求解器来解决,这正是您的求职面试者想要的。
答案 1 :(得分:0)
这类似于m色问题。除了这里,我们被要求返回最小值m。不幸的是,这是一个NP难题。 对于给定的问题,如果存在普通学生或教授相同,则将课程视为顶点和边b / w 2顶点。 现在,首先使用Welsh–Powell Algorithm找到m的上限(需要最少的颜色),然后我们可以进行二进制搜索以找到哪个是我们可以着色的 m 的最小值。使用Graph Coloring
的所有顶点(没有2个具有相同颜色的相邻顶点)