Algorithm 将员工分成小组以获得最大满意度

Algorithm 将员工分成小组以获得最大满意度,algorithm,knapsack-problem,satisfiability,Algorithm,Knapsack Problem,Satisfiability,只是好奇的问题。还记得在课堂小组活动中,教授会把学生分成一定数量的小组(n) 我的一些教授会从每个学生身上拿出一张清单,上面列出了自己想与之共事的人和自己不想与之共事的人,然后神奇地将这些人分成小组,让学生与自己喜欢的人配对,避免与自己不喜欢的人共事 对我来说,这个算法听起来很像背包问题,但我想我会问问大家,你们解决这类问题的方法是什么 编辑:发现描述的内容与我的问题完全相同。为似曾相识读第二段 这个问题可能是暴力强迫的,因此我的方法是首先暴力强迫它,然后在我有更好的想法时修复它。对我来说,这听

只是好奇的问题。还记得在课堂小组活动中,教授会把学生分成一定数量的小组(
n

我的一些教授会从每个学生身上拿出一张清单,上面列出了自己想与之共事的人和自己不想与之共事的人,然后神奇地将这些人分成小组,让学生与自己喜欢的人配对,避免与自己不喜欢的人共事

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


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

这个问题可能是暴力强迫的,因此我的方法是首先暴力强迫它,然后在我有更好的想法时修复它。

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

根据我对问题的看法,我设置了以下内容:

  • 那就是学生们
  • 如果以下两种情况都成立,两个学生将通过一条边连接起来:
  • 两个学生中至少有一个想和另一个一起工作
  • 这两个学生都不想和另一个一起工作
然后是将图划分为大小为n的团的问题。(假设学生人数可被n整除)

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


至于有效解决这个问题的方法,我不知道,但这可能会让你更深入地了解这个问题。

你可以很容易地将其建模为一个聚类问题,你甚至不需要定义空间,你可以定义距离:

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


然后你就可以找到集群了,耶。然后分割任何过大的集群,确信集群中的人都能很好地一起工作。

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

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


但你要求成立一个团队(我将其转化为每个团队2人以上)。在这种情况下,您可以让每个人填写他们从最好到最差的比赛,然后运行听起来不错的

;我的教授总是让我和班上最懒的人一起工作,结果我会做太多的工作@詹姆斯:有时候这是最好的学习方法@Jweede:这可能是一个很好的方式来了解(1)人们会利用你,(2)你的老板不会意识到你的辛勤工作你对
n
的使用非常普遍。每个学生都必须喜欢和不喜欢相同数量的人。理想情况下,一个人会选择3个他们喜欢的人,3个他们不喜欢的人。然而在实践中,
n
只是一个最大值。。。你甚至可以用它来计算问题的复杂性。图论是我对这个问题的另一种想法。如果我没记错的话,派系是NP难的。然而,我不认为类的大小会如此之大,以至于难以解决这个问题。@Jweede,根据维基百科的那篇文章,它实际上是NP完全的。我想这也使它成为NP难的问题。@incremidman是的,NP完全问题是NP难问题的一个子集。嗯,好的,我们知道如何使用暴力。这是一个怎样的答案?我想Knuth会同意你的观点。@WhirlWind:他没有具体问我们会使用什么算法,他问“你对这类问题的处理方法是什么”。这就是我的方法。这个问题可能是暴力强迫的,耶,这意味着它肯定是可计算的。这个想法很有趣。在这个抽象空间中使用距离可以让我们不去尝试和绘制点(这首先需要解决问题)。由于对集群进行分区需要大约O(大小)的时间,因此我认为我们可以相当有效地解决这个问题。不过,为了说明对称性,你需要调整距离(你应该更愿意和你喜欢的人一起工作,而不是和你喜欢但不在乎你的人一起工作)。这意味着5个距离,而不是3个距离,如果我们估计爱恨相当于中等距离。