x
R を使用して、長n
さのベクトルを最大でpartitionに分割するすべての可能な方法を見つけようとしていますm
。が小さい場合の方法を知っていますn
:
library(partitions)
x <- c(10, 20, 30, 40)
n <- length(x)
m <- 3
# In how many ways can we partition n objects into at most m patitions
parts <- restrictedparts(n, m)
sets <- setparts(parts)
この例では、の値sets
は次のとおりです。
[1,] 1 1 1 1 2 1 1 1 1 1 1 2 2 2
[2,] 1 1 1 2 1 2 1 2 2 1 2 1 1 3
[3,] 1 2 1 1 1 2 2 1 3 2 1 3 1 1
[4,] 1 1 2 1 1 1 2 2 1 3 3 1 3 1
の各列はsets
、一意の配置ごとに、各アイテムをどのパーティションx
に割り当てる必要があるかを示しています。
n
が大きい場合に問題が発生します。
n <- 15
m <- 4
parts <- restrictedparts(n, m)
# This expression will max out your CPU usage and eventually run out of memory.
sets <- setparts(parts)
メモリ不足にならずにこの操作を行うにはどうすればよいですか? それを行うための速い方法があるとは思えないので、バッチでそれを行い、ディスクに書き込む必要があると思います.