Re: generating subsets

*To*: mathgroup at smc.vnet.net*Subject*: [mg21594] Re: [mg21588] generating subsets*From*: Andrzej Kozlowski <andrzej at tuins.ac.jp>*Date*: Sun, 16 Jan 2000 22:43:43 -0500 (EST)*Sender*: owner-wri-mathgroup at wolfram.com

This is a classic problem for which there are dozen of solutions. My favourite one is Ilan Vardi's ("Computational Recreations in Mathematica): subSets[l_List] := Distribute[Map[{{}, {#}} &, l], List, List, List, Union] In[5]:= Subsets[{a, b, c}] Out[5]= {{}, {c}, {b}, {b, c}, {a}, {a, c}, {a, b}, {a, b, c}} Algebraic programs like this one are usually not the fastest possible but for me this is easily compensated for by their elegance and readability. > From: Michael Gass <mgass at bach.math.csbsju.edu> To: mathgroup at smc.vnet.net > Date: Sun, 16 Jan 2000 03:56:54 -0500 (EST) > To: mathgroup at smc.vnet.net > Subject: [mg21594] [mg21588] generating subsets > > > I need an _efficient_ procedure for generating all the subsets > of a given set. The procedure should produce output as follows: > > subSets[{a,b,c}] > produces > {{}, {a}, {b}, {c}, {a,b}, {a,c}, {b,c}, {a,b,c}} > > I have written a recursive procedure to do this, but > it takes quite a while to generate, say, the 512 subsets > of a 9 element set and I need to work with somewhat larger > sets. > > Thanks > > -- > Michael Gass Department of Mathematics > phone: 320 363-3090 St. John's University > email: mgass at csbsju.edu Collegeville, MN 56321-3000 > > > > >