假设你有5节课: A,B,C,D,E。每一节课在不同的时间相遇,因此注册该课程的学生将优先选择他们将选哪一节(他们只能选一节)。当学生注册该课程时,他们会按优先顺序列出他们希望参加的三个部分。
每节都有n名学生。让我们简单地说,正好有5个学生注册了这门课程。
所以,问题是:你如何有效地使学生与他们喜欢的部分相匹配?
我见过一些类似匹配场景的问题,但都不太适合,恐怕我对算法还不太了解。顺便说一句,这是一个真正的问题,我知道这个部门需要几天的时间才能手工完成。
发布于 2013-08-12 08:29:51
也许你可以把它们随机分成几个部分。接下来,您选择随机对的学生,并考虑是否交换它们会改善分布(这会增加与他们的偏好的匹配吗?)您可以迭代,直到X迭代没有改进的可能。这显然是一种非常幼稚的方法,但是如果您的样本很小,它可能会很快收敛。您不能保证您有最佳的解决方案,但因此,您将需要一个蛮力的方法,这可能是不可能的。
发布于 2013-08-12 09:20:13
是否有一个评分系统,如果学生1在A节,分数是20?(另一方面,如果学生2在A节,分数是15?
我的问题是,如果A部分只剩下一个名额,而学生1和2都最喜欢A部分,那么谁先注册就能得到这个位置。而不是谁最适合(更高的分数)。
如果没有得分,你可以循环通过学生,并将他们放在他们喜欢的部分。如果第一个人已经满了,试试他们的第二个偏好,然后再试试第二个。如果学生喜欢的三个部分都填满了,就把它们登记到一个没有填写的部分。
(如果有评分的话,情况就不一样了,因为您必须为每个部分提供一个优先级队列,并将其最大化。)
https://stackoverflow.com/questions/18181753
复制相似问题