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
>
>
>
>
>