【发布时间】:2012-11-05 06:53:09
【问题描述】:
我有一堆集合,A1、A2、A3,... AN。每个集合包含从 0 到 2000 的值的 N 个元素(可以说最多 1000 个)。 例如。
A1{1,2,3,4}
A2{2,4,3,5}
A3(1,2,5,6)
现在对于尺寸 k,例如3,A1 的组合将是 C1(1,2,3), C2(1,2,4), C3(2,3,4) 对于 A1 到 AN 我需要弄清楚 A1 中的所有组合是否也存在在 A2 到 AN 的组合中的某处。
即A1 的组合 C3 将匹配 A2 中的组合,也许还有 AN。现在我需要 A1 的 C1 和 C2 的结果以及 A2 到 AN 的结果。 简单而低效的方法是为所有集合 A1 到 AN 生成 k 大小的所有组合。然后对于 A 的 C1 哪里/如果它存在于 A2 到 AN。之后是 C2,然后是 C3。然后继续下一组并重复。
我该如何改进这种方法,因为一旦添加了新集合,它就需要频繁且昂贵的计算?
我发现的另一种解决方案将在 O(N^2 + N) 中运行而无需优化,这基本上涉及获取 A1 和 A2...AN 的交点,计算这些交点的组合,然后查看每个交点的次数这些组合中的大多数出现在生成的结果中。
【问题讨论】:
标签: performance optimization set computer-science combinations