我正在寻找一种特殊的组合形式,在这种组合中,没有两个集合具有多个相交元素。让我用一个例子来解释:
假设我们有9个字母集,其中包含A,B,C,D,E,F,G,H和I
如果创建三个字母的标准非重复组合,则将有9C3套。这些将包含ABC,ABD,BCD等集合。我正在寻找创建最多具有1个普通字母的集合。因此,在此示例中,我们将获得以下集合:
ABC,ADG,AEI,AFH,BEH,BFG,BDI,CFI,CDH,CEG,DEF和GHI-请注意,如果您选择两组,则重复的字母不得超过1个。
生成此类集合的好方法是什么?它应该是可扩展的解决方案,以便我可以处理一组1000个字母,子集大小为4的字母。
非常感谢您的帮助。
谢谢
我不得不添加另一个答案,因为另一个答案已经太久了。
如果您有以下限制条件:
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’中恰好出现一次。
不幸的是,似乎您可能不得不更改一些约束。