MathGroup Archive 2002

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

Search the Archive

Re: Re: Help! How to calculate additive partitions?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg34440] Re: Re: [mg34432] Help! How to calculate additive partitions?
  • From: BobHanlon at aol.com
  • Date: Mon, 20 May 2002 04:21:34 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

A much faster way came to mind:

Needs["DiscreteMath`Combinatorica`"];

myPartitions[n_Integer?Positive] :=
  
Flatten[Permutations /@ Partitions[n],1]

n=5; 
myPartitions1[n]

{{5}, {1, 4}, {2, 3}, {3, 2}, {4, 1}, {1, 1, 3}, {1, 2, 2},
 
  {1, 3, 1}, {2, 1, 2}, {2, 2, 1}, {3, 1, 1}, {1, 1, 1, 2},
 
  {1, 1, 2, 1}, {1, 2, 1, 1}, {2, 1, 1, 1}, {1, 1, 1, 1, 1}}

Length[%]==2^(n-1)

True


In a message dated 5/19/02 12:01:55 PM,  writes:

>In a message dated 5/19/02 5:08:45 AM, Tom.Brodhead at worldnet.att.net writes:
>
>>I need to find a formula or method that will allow me to calculate the
>>additive partitions of a given number.
>>
>>E.g., 3 can be expressed as
>>
>>1+1+1
>>2+1
>>1+2
>>3
>>
>>IMPORTANT: Even though 2+1 and 1+2 employ the same values, the order is
>>important and thus the procedure or formula that I need would need to
>>produce both of those results.
>>
>>Likewise, 4 would break down this way:
>>1+1+1+1
>>2+1+1
>>1+2+1
>>1+1+2
>>2+2
>>3+1
>>1+3
>>4
>>
>>I need to calculate both the number of results that I should get, and
>the
>>results themselves.
>>
>>How can this be done?
>>
>
>Needs["DiscreteMath`Combinatorica`"];
>
>
>A brute force approach which gets quite slow for large n:
>
>
>myPartitions[n_Integer?Positive] :=
> 
>    Union[Flatten[Table[Compositions[n,k],{k,n}],1] //.
> 
>        {x___,0,y___}:> {x,y}];
>
>
>myPartitions[3]
>
>
>{{3}, {1, 2}, {2, 1}, {1, 1, 1}}
>
>
>myPartitions[4]
>
>
>{{4}, {1, 3}, {2, 2}, {3, 1}, {1, 1, 2}, {1, 2, 1}, {2, 1, 1}, {1, 1, 1,
>1}}
>
>
>The number of results for myPartitions[n] is just 2^(n-1)
>
>
>Table[{n,l=Length[myPartitions[n]], l==2^(n-1)}, {n,7}]
>
>
>{{1, 1, True}, {2, 2, True}, {3, 4, True}, {4, 8, True},
> {5, 16, True}, {6, 32, True}, {7, 64, True}}
>
>
>numberOfMyPartitions[n_Integer?Positive] := 2^(n-1);
>

Bob Hanlon
Chantilly, VA  USA


  • Prev by Date: Re: Help! How to calculate additive partitions?
  • Next by Date: Re: Help! How to calculate additive partitions?
  • Previous by thread: Re: Help! How to calculate additive partitions?
  • Next by thread: Re: Help! How to calculate additive partitions?