Ver 6.0 Subsets and Packed Array Question
- To: mathgroup at smc.vnet.net
- Subject: [mg82405] Ver 6.0 Subsets and Packed Array Question
- From: "Dana DeLouis" <dana.del at gmail.com>
- Date: Fri, 19 Oct 2007 05:05:02 -0400 (EDT)
Hello. Does anyone know why the built in function Subsets "apparently" does not generate a Packed Array for a large table? Do you think it should? The reason I ask is that the Combinatorica Package function "KSubsets" apparently does return a packed array. I was having memory troubles with Subsets, and I traced the problem back to this. Set up (Ver 6.0)... Needs["Combinatorica`"]; TPA[m_] := Developer`ToPackedArray[m]; PAQ[m_] := Developer`PackedArrayQ[m]; n = Binomial[20, 6] 38760 Here are 3 tables w/ the same dimension: m1 = RandomInteger[{1, 49}, {n, 6}]; m2 = KSubsets[Range[20], 6]; m3 = Subsets[Range[20], {6}]; Dimensions /@ {m1, m2, m3} {{38760, 6}, {38760, 6}, {38760, 6}} The first two are Packed Arrays, but the built-in function "Subsets" is not: PAQ /@ {m1, m2, m3} {True, True, False} The ByteCount of the built-in function is much larger: ByteCount /@ {m1, m2, m3} {930320, 930320, 5736512} We could make it a Packed Array and get the same ByteCount: ByteCount[TPA[m3]] 930320 This makes a big difference on my 2 Gig Memory computer. Don't know how I even got an answer here. I can't do anything else after this point without shutting down the Kernel. ByteCount[KSubsets[Range[49], 6]] (* ok *) 335,611,664 ByteCount[Subsets[Range[49], {6}]] (* This is tough!! *) 2,069,604,800 Thanks for any insight: Dana