集合A的幂集是A的所有子集所组成的集合。例如A={1,2,3},则A的幂集就是ρ(A)={{1,2,3},{1,2},{1,3},{1},{2,3},{2},{3},Φ}。
则求解ρ(A)的过程就可以看作是一次对集合中的元素进行取舍的过程,这个过程可以用一棵二叉树来描述:
下面是Java语言的求解过程:
package com.ray;
import java.util.ArrayList;
import java.util.List;
public class Test{
public static void powerSet(int i,List<Integer> A,List<Integer> B){
if(i>=A.size())
System.out.print(B.toString()+",");
else{
int x = A.get(i);
B.add(x);
powerSet(i+1,A,B);
B.remove(new Integer(x));
powerSet(i+1,A,B);
}
}
public static void main(String[] args) {
ArrayList<Integer> A = new ArrayList<Integer>();
A.add(1);
A.add(2);
A.add(3);
ArrayList<Integer> B = new ArrayList<Integer>();
powerSet(0,A,B);
}
}