【发布时间】:2013-07-05 12:30:42
【问题描述】:
假设我有一群学生和几个教授。每个学生都需要与其中一位教授进行口试。为此,每个学生都会提供一份(有序的)名单,其中包括他更愿意与他一起参加考试的三位教授。当然,每位教授只能进行有限数量的考试。 我可以使用 Kuhn-Munkres 算法来计算一个作业,将尽可能多的学生分配给他们的第一个愿望教授。
现在假设每个学生都必须参加 两次 考试,并相应地提供两个愿望清单。同样,我想将尽可能多的学生分配给他们最初希望的教授,但要遵守学生不得与同一位教授同时参加考试的约束。
是否有一些算法可以有效地计算最佳分配?也许是 Kuhn-Munkres 算法的推广?还是这个新问题已经是 NP 难的?可以尝试将哪些难题简化为这一难题?
我应该强调我正在寻找一个精确的解决方案。很容易想到一些启发式方法,比如考虑一种类型的考试。
【问题讨论】:
-
如果你想最大化分配给他们的第一个愿望教授的学生数量,为什么需要三个教授的名单?
-
我不确定硬度,但无论如何,整数规划很有可能是阻力最小的路径。
-
@LiorKogan 我认为目标是将所有学生分配给他们选择的 3 位教授中的一位,然后,如果有多种解决方案,请选择使人数最大化的那个的学生有他们的第一个愿望教授。
-
您可以使用 Kuhn-Munkres 将学生与教授配对,而不是使用 Kuhn-Munkres 将学生与教授配对。您只需要获取学生的愿望清单,并以某种方式将其组合成一个。例如,一对教授的排名可以是个人排名的平均值,也可以是不太受欢迎的教授的排名。
-
@Teepeemm 这样很难控制每个教授的工作量。
标签: algorithm mathematical-optimization