我想得到给定长度的所有可能的子集,这些子集导致真实的集合。因此,对于集合 [a,b,c] 和子集大小 1 和 2,我想计算:
[[a,b],[c]] , [[b,c],[a]] , [[a,c],[b]]
我一直在试验来自 Algorithm to calculate power set (all possible subsets) of a set in R 的代码,但该算法将生成所有子集,而不仅仅是那些导致集合的子集。
我正在尝试解决尺寸约为 30 的问题。我想计算每个子集组合的分数,只保留最好的,这样我希望内存没有困难。选择的编程语言是python。
最佳答案
如何创建长度为 2 的组合,并通过计算与原始集合的差来生成余数?这就是我的意思:
from itertools import combinations
s = {'a', 'b', 'c'}
res = [(set(comb), s.difference(comb)) for comb in combinations(s, 2)]
生成:
[({'a', 'c'}, {'b'}), ({'b', 'c'}, {'a'}), ({'a', 'b'}, {'c'})]
关于python - 计算导致集合的给定大小的子集的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26679271/