【问题标题】:Divide people into teams for most satisfaction将人员分成团队以获得最大的满意度
【发布时间】:2010-05-16 20:24:02
【问题描述】:

只是一个好奇的问题。还记得在课堂小组作业中教授会将人们分成一定数量的小组(n)吗?

我的一些教授会从每个学生那里获取n 一个想共事的人和n 一个不想共事的人的名单,然后神奇地将n 分组给学生会与他们喜欢的人相匹配,并避免与他们不喜欢的人一起工作。

对我来说,这个算法听起来很像一个背包问题,但我想我会四处问问你解决这类问题的方法是什么。

编辑:发现 an ACM article 描述的内容与我的问题完全相同。阅读第二段的似曾相识。

【问题讨论】:

  • 听起来不错;我的教授总是让我和班上最懒的人一起工作,结果我会做太多的工作。 ;-)
  • @james 有时这是最好的学习方式。 ;)
  • @Jweede:这可能是了解(1)人们会剥削你和(2)你的老板不会认可你的辛勤工作的好方法
  • 您对n 的使用相当普遍。每个学生必须喜欢和不喜欢相同数量的n 人?
  • @IVlad 是的。理想情况下,一个人会选择 3 个他们喜欢的人和 3 个他们不喜欢的人。但实际上,n 只是一个最大值。

标签: algorithm knapsack-problem satisfiability


【解决方案1】:

对我来说,这听起来更像是某种clique 问题。

按照我看到问题的方式,我设置了以下graph

  • 顶点是学生
  • 如果以下两个条件都成立,则两个学生将通过边连接:
    1. 两名学生中至少一名想与另一名合作。
    2. 这两个学生中没有一个不想和另一个一起工作。

然后将图划分为大小为 n 的小团。 (假设学生人数能被n整除)

如果这是不可能的,我可能会让对边缘的第一个约束滑倒,并在两个人之间有边缘,只要他们都没有明确表示他们不想与另一个人合作。

至于有效解决此问题的方法,我不知道,但希望这能让您更深入地了解问题。

【讨论】:

  • 有趣...您甚至可以用它来找出问题的复杂性。
  • 图论是我对这个问题的另一个想法。如果我没记错的话,派系是 NP-Hard 的。但是,我认为班级规模不会太大,以至于难以解决。
  • @Jweede,根据那篇维基百科文章,它实际上是 NP 完全的。我想这也使它成为 NP-Hard。
  • @incrediman 是的,NP-Complete 问题是 NP-Hard 问题的一个子集。
【解决方案2】:

您可以很容易地将其建模为聚类问题,甚至不需要定义空间,实际上只需定义距离:

如果两个人都想一起工作,就让他们非常亲近。 如果其中一个想要与另一个合作,请关闭。 如果只是冷漠,中等距离。 如果其中一方不想与另一方合作,则离得很远。

然后你就可以找到集群了,是的。然后拆分任何规模过大的集群,并确信集群中的人都能很好地协同工作。

【讨论】:

  • 这个想法很有趣。在那个抽象空间中使用距离使我们不必尝试绘制点(这首先需要解决问题)。由于对集群进行分区大约需要 O(Size) 时间,我认为我们可以在那里相当有效地解决问题。但是,需要调整距离以考虑对称性(与喜欢但不关心您的人相比,您应该更有可能与您喜欢和喜欢的人一起工作)。如果我们估计 Love-Hate 相当于 Medium-Medium,这意味着 5 个距离而不是 3 个距离。
【解决方案3】:

这个问题可以被暴力破解,因此我的方法是先暴力破解它,然后当我有更好的想法时修复它。

【讨论】:

  • 嗯,好的,我们知道如何暴力破解它。这是怎么回答的?
  • 我认为 Knuth 会同意你的观点。
  • @WhirlWind:他没有具体问我们会使用什么算法,他问的是“你解决这类问题的方法是什么”。这将是我的方法。
  • 这个问题可以被暴力破解,是的,这意味着它肯定是可计算的。
【解决方案4】:

您可以使用几种算法。一个很好的例子就是所谓的“稳定婚姻问题”,它有一个完美的解决方案。您可以在此处阅读更多信息:

http://en.wikipedia.org/wiki/Stable_marriage_problem

稳定的婚姻问题只适用于两组人(婚姻案例中的男性/女性)。如果你想结对,你可以使用一个变体,稳定室友问题。在这种情况下,您创建了对,但每个人都来自一个池。

但您要求组建一个团队(我将其翻译为每个团队 > 2 人)。在这种情况下,您可以让每个人填写他们最好到最差的匹配,然后运行 ​​

【讨论】:

    猜你喜欢
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-23
    • 1970-01-01
    • 2013-07-10
    • 1970-01-01
    • 2020-06-09
    相关资源
    最近更新 更多