将学生划分为N组的算法

时间:2017-04-12 12:45:08

标签: algorithm graph grouping

我想将M学生分成N队。这并不难,但有一些限制因素。

1.constraint:(A,B)一对学生必须在一个小组中。这意味着studentA希望与studentB在同一组中。

2.constraints:(A,B)一对学生(studentA和studentB)不能在一个小组中。

我有M个学生,希望通过这种约束创建N组。如果无法对它们进行划分,请找到最小的违反约束条件的最佳解决方案。

知道如何通过算法解决它吗?

1 个答案:

答案 0 :(得分:0)

您可能会发现将此视为graph colouring problem会很有用。该链接包含各种建议的算法。

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

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

不幸的是,即使将学生分成3组,这也证明你的问题是NP难的(因为你可以用它来找到图的3色 - 这个问题是NP-complete