【发布时间】:2012-11-13 09:08:44
【问题描述】:
我正在尝试找到一种算法来根据偏好将一组学生分成小组。每个学生选择三个他们想合作的学生和三个他们不想合作的学生。其余的被假定为“如有必要可以使用”。
找到最符合他们偏好的学生组合的最佳方法是什么?
【问题讨论】:
-
我不确定,可能是K-mean clustering?平均函数的选择方式是对不喜欢赋予负权重,对喜欢赋予正权重。
-
我实际上是一名高中教师,一直在努力将学生分组。我正在尝试自动化这个过程,以便孩子们在在线调查中输入他们的偏好,并在全班完成调查后分配到小组。
-
Branch & Bound 可以,但这可能不是最好的算法。
-
@Vikas 提出的 k-mean 似乎是您想要的。虽然请允许我说,我认为让孩子以这种方式选择是不明智的。这将导致“酷”的孩子们聚集在一起,而“失败者”则被孤立。就他们不学会与他们不喜欢的人相处/社交而言,这也对他们没有帮助。诸如随机分配之类的东西,也许带有“偏好”给出的一点偏见,对我来说听起来是一个更好的主意。 (另外,因为迂腐,选择 3 个其他人一起工作,结果是 4 人一组,而不是 3 人)。
-
广义问题“生成
k组”并且不限制“不喜欢”的数量是 NP-Hard 并且可以通过简单的归约从 graph-coloring problem(即 NP-Hard)归约:每条边都是一个“不喜欢”——找到k组,解决方案中每个生成的组都是图中着色中的一种颜色。
标签: algorithm optimization stable-marriage