powerset {1, 2, 3}是:
{{}, {2}, {3}, {2, 3}, {1, 2}, {1, 3}, {1, 2, 3}, {1}}
假设我有一个SetJava语言:
Set<Integer> mySet = new HashSet<Integer>();
mySet.add(1);
mySet.add(2);
mySet.add(3);
Set<Set<Integer>> powerSet = getPowerset(mySet);
Run Code Online (Sandbox Code Playgroud)
如何以最佳的复杂度顺序编写函数getPowerset?(我想它可能是O(2 ^ n).)
我有一个问题,我必须分析500C5组合(255244687600)的东西.将其分布在10个节点的集群中,每个集群每秒处理大约10 ^ 6个组合,这意味着该作业将在大约7个小时内完成.
我遇到的问题是在10个节点上分配255244687600组合.我想给每个节点提供25524468760,但是我使用的算法只能顺序生成组合,我希望能够传递元素集和一系列组合指标,例如,[0 -10 ^ 7),[10 ^ 7,2.0 10 ^ 7)等,并让节点自己找出组合.
我目前使用的算法来自以下内容:
Stack Overflow问题有效地计算矢量组合
我考虑过使用一个主节点,它枚举每个组合并将工作发送到每个节点.然而,从单个节点迭代组合并来回通信工作所产生的开销是巨大的,并且随后将导致主节点成为瓶颈.
是否有任何良好的组合迭代算法可以实现有效/最佳的分布式枚举?