Tag: powerset

如何生成特定大小的集合分区?

我想以特定的方式为集合生成分区:我需要在生成这些分区的过程中过滤掉所有不是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的分区。

生成集合的所有“唯一”子集(不是powerset)

假设我们有一个包含几个子集的Set S : – [a,b,c] – [a,b] – [c] – [d,e,f] – [d,f] – [e] 我们还要说S包含六个独特的元素: a, b, c, d, e和f 。 我们怎样才能找到包含S每个独特元素的S所有可能子集? 函数/方法的结果应该是这样的: [[a,b,c], [d,e,f]]; [[a,b,c], [d,f], [e]]; [[a,b], [c], [d,e,f]]; [[a,b], [c], [d,f], [e]]. 是否有任何最佳实践或任何标准方法来实现这一目标? 我将非常感谢伪代码,Ruby或Erlang示例。

生成集合的powerset而不在Erlang或Ruby中保留堆栈

我想生成一个相当大的集合(约30-50个元素)的powerset,我知道它需要2^n来存储powerset。 是否有可能一次生成一个子集? 即生成具有迭代的集合的powerset,将每个生成的子集保存到磁盘/数据库,将其从堆栈/内存中删除,然后继续生成其他子集? 不幸的是,我没有根据我的需要修改Erlang和Ruby示例。