【发布时间】:2019-04-30 01:38:28
【问题描述】:
我有一个单词列表,我需要通过重复生成所有排列。必须指定排列的长度。单词列表很大(即 30 个单词),所以我的功能也需要高效.. 示例:
wordsList = c("alice", "moon", "walks", "mars", "sings", "guitar", "bravo")
鉴于每个排列必须恰好有 3 个单词,我需要生成所有排列。那将是["alice", "moon", "walks"]、["alice", "walks", "moon"]、["moon", "alice", "walks"] 等
【问题讨论】:
-
当我提供一个大列表(即 3000 个单词列表,需要生成 15 个单词的组合)时,我的计算机挂起。知道如何分发或减少对 RAM 的依赖吗?
-
生成那么多排列是不可行的。这超过了
10^52的总排列 (prod(3000:2986) = 1.38546e+52)。 -
你有
["alice", "moon", "walks"]连续两次......你的意思是["alice", "moon", "walks"]、["walks", "alice", "moon"]、["moon", "alice", "walks"]? -
@JosephWood 确实有重复。我现在已经修好了。关于组合的数量,我认为我需要重新考虑。然而,我至少能做的是从 2100 个单词的列表中组合 11 个单词,我相信使用一些云硬件是可行的。主要问题是我不知道如何分配/并行化负载。
-
看起来我遇到了一些错误,例如
cannot allocate vector of size 483342.8 Gb480TB 的 RAM 实在是太疯狂了......而且我很确定我没有完成最后一次迭代
标签: r permutation