我想以特定方式为集合生成分区:我需要在生成这些分区的过程中过滤掉所有大小不为 N 的分区。一般的解决方案是“生成集合(不是幂集)的所有“唯一”子集”。
对于S
具有以下子集的集合:
[a,b,c]
[a,b]
[c]
[d,e,f]
[d,f]
[e]
以及以下“独特”元素:
a, b, c, d, e, f
使用参数运行的函数/方法的结果N = 2
应该是:
[[a,b,c], [d,e,f]]
虽然以下分区应通过函数/方法过滤掉:
[[a,b,c], [d,f], [e]]
[[a,b], [c], [d,e,f]]
[[a,b], [c], [d,f], [e]]
底层数据结构并不重要,可以是数组、集合或其他。
原因:在获得所有分区的完整集之前,我需要过滤掉一些分区,因为生成所有分区的函数/方法的计算量相当大。
根据“生成集合的分区”,可能的分区数量可能很大:23 个元素为 44152005855084346。我的数据是起始集中的 50-300 个元素,所以在将它们保存在任何地方之前,我肯定需要过滤掉大小不等于 N 的分区。