Learn R Programming

partitions (version 1.8-2)

parts: Enumerate the partitions of an integer

Description

Given an integer, return a matrix whose columns enumerate its partitions.

Function parts() returns the unrestricted partions; function diffparts() returns the unequal partitions; function restrictedparts() returns the restricted partitions; function blockparts() returns the partitions subject to specified maxima; and function compositions() returns all compositions of the argument.

Usage

parts(n)
diffparts(n)
restrictedparts(n, m, include.zero=TRUE, decreasing=TRUE)
blockparts(f, n=NULL, include.fewer=FALSE)
compositions(n, m=NULL, include.zero=TRUE)

Arguments

n
Integer to be partitioned. In function blockparts(), the default of NULL means to return all partitions of any size
m
In restrictedparts(), the order of the partition
include.zero
In functions restrictedparts() and compositions(), Boolean with default FALSE meaning to include only partitions of $n$ into exactly $m$ parts; and TRUE meaning to include partitions
include.fewer
In function blockparts(), Boolean with default FALSE meaning to return vectors whose sum is exactly n and TRUE meaning to return partitions whose sum is at most n
decreasing
In restrictedparts(), Boolean with default TRUE meaning to return partitions whose parts are in decreasing order and FALSE meaning to return partitions in lexicographical order, as appearing in Hindenburg
f
In function blockparts(), a vector of strictly positive integers that gives the maximal number of blocks; see details

Details

Function parts() uses the algorithm in Andrews. Function diffparts() uses a very similar algorithm that I have not seen elsewhere. These functions behave strangely if given an argument of zero.

Function restrictedparts() uses the algorithm in Andrews, originally due to Hindenburg. For partitions into at most $m$ parts, the same Hindenburg's algorithm is used but with a start vector of c(rep(0,m-1),n).

Function blockparts() enumerates the compositions of an integer subject to a maximum criterion: given vector $y=(y_1,\ldots,y_n)$ all sets of $a=(a_1,\ldots,a_n)$ satisfying $\sum_{i=1}^pa_i=n$ subect to $0y includes zero elements, these are treated consistently (ie a position with zero capacity).

If n takes its default value of NULL, then $\sum_{i=1}^pa_i=n$ is removed (the numbers may sum to anything). Note that these solutions are not necessarily in standard form, so functions durfee() and conjugate() may fail.

Function compositions() returns all $2^n$ ways of partitioning an integer; thus 4+1+1 is distinct from 1+4+1 or 1+1+4. This function is different from all the others in the package in that it is written in R; it is not clear that C would be any faster.

References

G. E. Andrews. The Theory of Partitions, Cambridge University Press, 1998

Examples

Run this code
parts(5)
diffparts(10)
restrictedparts(9,4)
restrictedparts(9,4,FALSE)
restrictedparts(9,4,decreasing=TRUE)

blockparts(1:4)
blockparts(1:4,3)
blockparts(1:4,3,include.fewer=TRUE)

compositions(3)

Run the code above in your browser using DataLab