算法:添加新元素时如何查找集的子集?

时间:2017-06-22 10:31:49

标签: algorithm recursion subset dynamic-programming

我有一个子集算法,可以找到给定集合的所有子集。原始集合的东西是它是一个不断增长的集合,如果元素被添加到它,我需要再次重新计算它的子集。

有没有办法可以优化可以从上一个计算点重新计算子集的子集算法,而不是一次又一次地计算整个事物。

authentication

1 个答案:

答案 0 :(得分:1)

当然,你只需要将相同的算法应用于每个先前生成的元素到额外的集合(只有增长的部分)

前:

如果生成的子集是s1, s2, ... , sn

,您的设置从a1a2a3增长到a1a2a3a4a5

您需要将子集迭代到额外添加的集合:

for set x in subsets do :
    generate(x)
        generate(x + a4)
        generate(x + a5)

Btw 我看到你添加了动态编程标签,但我不认为这是一个dp问题,因为dp主要用于需要最大化/最小化/计数子集的问题,但是没有生成他们自己的子集。