【发布时间】:2015-10-03 02:54:36
【问题描述】:
我正在尝试找到一种有效的方式来生成具有特定大小 k 的子集的集合的幂集。我已经找到了如何在一个范围内生成所有 powerset 和 powerset 的答案,但是如果我只想要一个特定的大小,我不确定该怎么做。
谢谢!
【问题讨论】:
-
你有没有试过这样做?也许您的实施效率低下?
-
集合有多少个元素?
-
@Sesame,我目前正在使用一种方法来生成整个 powerset,然后遍历它并删除与我想要的长度不匹配的子集。
-
通常情况下的“公式”是
2^S = flatten([[x U Y for Y in 2^(S-{x})] for x in S])。您想要大小为n的子集,因此您希望每个Y的大小为n-1。因此,只需采用现有实现并向函数添加额外的大小参数,并在递归调用时使用size-1。 -
@user3386109,该集合有 2 到 31 个元素。我想生成长度为 3 的子集。