【发布时间】:2016-12-15 18:50:56
【问题描述】:
我正在尝试优化计算密集型的代码,因为它处理 80 个元素集的子集。
我想要加速的一个关键步骤是确定我的循环中的当前子集是否已经被处理。目前,我检查该子集是否包含在已处理的相同大小 k(基数)的子集中。将逐步处理的子集存储在嵌套列表中以检查子集是否已被处理(O(1) 而不是 O(80 选择 k) 中的搜索)会更快。
我编写一个函数来检查当前子集是否在我的已处理子集的嵌套列表中没有问题:access(treated, subset=c(2,5,3)) 返回 TRUE 如果 treated[[2]][[5]][[3]]==TRUE
但是,我不知道如何(在我的循环中)将我当前的子集存储在处理列表中。我希望这样的事情成为可能:treated[h] <- TRUE 其中 h 是我当前的子集(在上面的示例中:h=c(2,5,3))
我面临的主要问题是“[[..]]”的数量在我的循环中有所不同。除了完成 h 以使其长度为 80 并放入 80 个“[[..]]”的序列之外,我还有其他选择吗,例如:treated[[h[1]]][[h[2]]]...[[h[80]]] <- TRUE?
【问题讨论】: