partitionsGeneral | R Documentation |

The algorithms in `RcppAlgos`

go beyond the traditional integer partition algorithms and can tackle a wide variety of cases.

Efficient algorithms for partitioning numbers under various constraints:

Standard (with repetition)

Distinct

Restricted

Where each part has a specific multiplicity (i.e. when using

`freqs`

for multisets).Arbitrary target and source vector (

*e.g.*`partitionsGeneral(sample(1000, 20), 10, TRUE, target = 5000)`

)

Produce results in parallel using the

`nThreads`

arguments.Alternatively, the arguments

`lower`

and`upper`

make it possible to generate partitions/compositions in chunks allowing for parallelization via the parallel package.GMP support allows for exploration of cases where the number of partitions/compositions is large.

The output is in lexicographical order.

```
partitionsGeneral(v, m = NULL, repetition = FALSE,
freqs = NULL, target = NULL, lower = NULL,
upper = NULL, nThreads = NULL,
tolerance = NULL)
compositionsGeneral(v, m = NULL, repetition = FALSE,
freqs = NULL, target = NULL, weak = FALSE,
lower = NULL, upper = NULL, nThreads = NULL,
tolerance = NULL)
```

`v` |
Source vector. If |

`m` |
Width of the partition. If |

`repetition` |
Logical value indicating whether partitions/compositions should be with or without repetition. The default is |

`freqs` |
A vector of frequencies used for producing all partitions of a multiset of |

`lower` |
The lower bound. Partitions/compositions are generated lexicographically, thus utilizing this argument will determine which specific partition to start generating from ( |

`upper` |
The upper bound. Similar to |

`target` |
Number to be partitioned. If |

`weak` |
(Compositions only) Logical flag indicating whether to allow terms of the sequence to be zero. |

`nThreads` |
Specific number of threads to be used. The default is |

`tolerance` |
A numeric value greater than or equal to zero. This parameter is utilized when a constraint is applied on a numeric vector. The default value is 0 when it can be determined that whole values are being utilized, otherwise it is |

A matrix is returned with each row containing a vector of length `m`

.

`nThreads`

will be ignored in the following cases (i.e. Generating the`n^{th}`

partition in these cases are currently unavailable):With standard multisets. If zero is the only element with a non-trivial multiplicity, multithreading is possible (

*e.g.*`partitionsGeneral(0:100, freqs = c(100, rep(1, 100)), nThreads = 4)`

).If the source vector is not isomorphic to

`1:length(v)`

(*e.g.*`v = c(1, 4, 6, 7, 8)`

).

The maximum number of partitions/compositions that can be generated at one time is

`2^{31} - 1`

. Utilizing`lower`

and`upper`

makes it possible to generate additional partitions/compositions.

Joseph Wood

```
partitionsGeneral(1)
partitionsGeneral(-1:0, 1)
partitionsGeneral(-1:0, 1, target = -1)
partitionsGeneral(20, 5)
partitionsGeneral(20, 5, repetition = TRUE)
partitionsGeneral(20, 5, freqs = rep(1:4, 5))
partitionsGeneral(20, 5, TRUE, target = 80)
partitionsGeneral(0:10, repetition = TRUE)
partitionsGeneral(seq(2L, 500L, 23L), 5, target = 1804)
compositionsGeneral(0:10, 5, repetition = TRUE)
set.seed(111)
partitionsGeneral(sample(1000, 20), 5, TRUE, target = 2500)
system.time(one_thread <- partitionsGeneral(80, 10, TRUE))
system.time(two_threads <- partitionsGeneral(80, 10, TRUE, nThreads = 2))
identical(one_thread, two_threads)
```

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.