MathGroup Archive 2011

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Simple n-tuple problem - with no simple solution

  • To: mathgroup at smc.vnet.net
  • Subject: [mg115825] Re: Simple n-tuple problem - with no simple solution
  • From: Bob Hanlon <hanlonr at cox.net>
  • Date: Fri, 21 Jan 2011 04:35:46 -0500 (EST)

Load Combinatorica then use  0.05 * Compositions[20, n]

Needs["Combinatorica`"] // Quiet

n = 5;

Timing[c1 = Select[Tuples[Table[Range[0, 1.0, .05], {n}]], Total[#] == 1 &];]

{14.4972, Null}

Timing[c2 = 0.05 Compositions[20, n];]

{0.044528, Null}

c1 == c2

True


Bob Hanlon

---- Don <donabc at comcast.net> wrote: 

=============
Problem: Given an n-tuple  (n >= 1). with each element  able to take
on the values in
Range[0, 1.0, .05] , produce all the n-tuples that sum to 1.0.

The most direct way to solve this problem is to generaate all possible
n-tuples and Select out all those that sum to 1.0.

For example, when n = 2 :

n = 2;
Select[Tuples[Table[Range[0, 1.0, .05], {n}]], Total[#] == 1 &]

The problem with this solution is that the number of n-tuples that are
generated before the Select is used grows exponentially fast as a
function
of n - causing the system to run out of memory (RAM) very quickly.

Is there a more memory efficient way to solve this problem that
doesn't
use so much memory but still is not too slow in terms of processor
time?

Thank you.




  • Prev by Date: Re: How to edit/change Wolfram examples?
  • Next by Date: unexpected Timing results
  • Previous by thread: Re: Simple n-tuple problem - with no simple solution
  • Next by thread: Re: Simple n-tuple problem - with no simple solution