幂集是***的基本运算之一。由***的所有子集构成的***。对任何***a,a的幂集P(a)={x|x⊆a}。在ZFC公理系统中,幂集公理保证
求一个***的幂集就是求一个***的所有的子集,方法有穷举法,分治法,回溯等,这里使用回溯法。
回溯法是设计递归过程的一种重要的方法,它的求解过实质上是一个先序遍历一棵“状态树”的过程,只是这棵树不是遍历前预先建立的,而是隐含在遍历过程中的。
幂集中的每个元素是一个***,它或是空集,或含***A中一个元素,或含***A中两个元素…… 或等于***A。反之,从***A 的每个元素来看,它只有两种状态:它或属幂集的无素集,或不属幂集的元素集。则求幂集p(A)的元素的过程可看成是依次对***A中元素进行“取”或“舍”的过程,并且可以用一棵二叉树来表示过程中幂集元素的状态变化过程,树中的根结点表示幂集元素的初始状态(空集);叶子结点表示它的终结状态,而第i层的分支结点,则表示已对***A中前i-1个元素进行了取舍处理的当前状态(左分支表示取,右分支表示舍 )。因此求幂集元素的过程即为先序遍历这棵状态树的过程。
求***A={}的幂集可以从元素的角度看,即每个元素只有两个状态,取或者不去。则求幂集的过程可以看成是依次对***A中元素进行取或者不取操作,
并且可以用一颗树二叉树来表示。