我想将M学生分成N队。这并不难,但有一些限制因素。
1.constraint:(A,B)一对学生必须在一个小组中。这意味着studentA希望与studentB在同一组中。
2.constraints:(A,B)一对学生(studentA和studentB)不能在一个小组中。
我有M个学生,希望通过这种约束创建N组。如果无法对它们进行划分,请找到最小的违反约束条件的最佳解决方案。
知道如何通过算法解决它吗?
答案 0 :(得分:0)
您可能会发现将此视为graph colouring problem会很有用。该链接包含各种建议的算法。
顶点代表学生,颜色代表不同的组。
顶点之间的边表示那些学生想要在不同的组中。如果学生想要在同一组中,只需合并顶点。
不幸的是,即使将学生分成3组,这也证明你的问题是NP难的(因为你可以用它来找到图的3色 - 这个问题是NP-complete)