我需要一个针对以下问题的算法。
我有老师,每位老师都有他们喜欢的科目。例如,
教师1可能更喜欢science, maths and computers
教师2可能更喜欢english and maths
教师3可能更喜欢science, english and maths
像这样......
我有N
个答题纸。每个都属于任何一个主题(english, science, maths and computers
)。我需要根据他们的偏好为每位老师分配这些答题纸。但最多我们可以为教师分配50篇论文。如果我们有1000张答题纸,我们将拥有最少20
名教师(1000/50)
。
如果我们在maths
中有112个答题纸,并且如果我们有两个具有maths
偏好的教师,我们可以为他们分配100个,其余12个我们可以分配给任何教师(来自非首选类别)。
该算法的成功将取决于根据学生的偏好为教师分配答题纸的效率,以及他们拥有非偏好答题纸的程度。
谁能告诉我哪种算法适合它?
答案 0 :(得分:3)
此问题可以表述为简单的assignment problem(为n
工作人员分配n
个职位:
每位教师作为工人出现50次,每张作为工作出现一次。
如果教师是他喜欢的科目之一,则教师会连接到重量为0
的工作表,如果不是,则为1
。如果工作人员(50 * number of teachers
)多于工作,则添加虚拟工作(直到工人数量等于工作数量)与所有工作重量为0
的工人相关联,这些工作可以忽略在解决方案中。
从这一点开始,请参考解决分配问题的任何算法(请参阅wiki链接)。你想找到最小重量的作业。