我不得不添加另一个答案,因为另一个答案已经太久了。
如果您有以下限制条件:
1)您每周需要4人一组。
2)某一周中的每个小组都是不相交的,每个学生恰好是一个小组。
3)如果两个学生在同一个小组中,则他们将来不必再在同一个小组中。
如果您按以下方式构造图G:
1)每个学生都是一个节点。
2)如果两个学生以前从未在一起在一起,他们会加入边缘。
随着学生随意下课/加入,这成为一个难题!即使您最初只是从一个完整的图开始,但几周后,该图仍可能变得不可预测。
您的问题:您需要找到G的一个扩展子图,以便它是K_4的副本的并集,或者换句话说,是K_4s的一个分区。
不幸的是,看起来这个问题是NP-Hard:4套精确覆盖(即NP-完全)可以解决您的问题(就像3套精确覆盖可以减少为三角形)。
也许这将有助于给出一些近似算法:http
:
//www.siam.org/proceedings/soda/2010/SODA10_122_chany.pdf
(您的问题可以简化为Hypergraph匹配,因此可以使用针对该问题的算法)。
确切的封面:http :
//en.wikipedia.org/wiki/Exact_cover
分成三角形:https
:
//noppa.tkk.fi/noppa/kurssi/t-79.5103/viikkoharjoitukset/T-79_5103_solutions_5.pdf
精确覆盖4组=给定大小为4m的集合S和S的4个元素子集的集合C,是否存在C的子集C’,使得S的每个元素在C’中恰好出现一次。
不幸的是,似乎您可能不得不更改一些约束。



