我正在尝试使用 R 找到将x
长度向量n
划分为最多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)
如何在不耗尽内存的情况下执行此操作?我怀疑是否有一种快速的方法可以做到这一点,所以我怀疑我必须分批完成并写入磁盘。