2017-04-12 49 views
-4

我想将M个学生分成N组。这并不难,但有一些限制。将学生划分为N组的算法

1.约束:(A,B)一对学生必须在一组中。这意味着学生A想与学生B在同一个小组中。

2.约束:(A,B)一对学生(studentA和studentB)不得在一个组中。

我有M个学生,并希望通过这个约束创建N个组。如果不可能将它们分开,找到最少的违反约束条件的解决方案。

任何想法如何解决它的算法?

+5

这是* *你的**作业,不是我们的。 –

回答

0

你可能会觉得这是一个有用的想法graph colouring problem。该链接包含各种建议的算法。

顶点代表学生,颜色代表不同的组。

顶点之间的边表示那些学生想要在不同的组中。如果学生想要在同一组中,只需合并顶点。

不幸的是,把学生逼到3组,即使这证明了你的问题是NP难(因为你可以用它来寻找一个三色图 - 而这个问题是NP-complete