Performance 优化集合和组合

Performance 优化集合和组合,performance,optimization,set,computer-science,combinations,Performance,Optimization,Set,Computer Science,Combinations,我有一组,A1,A2,A3。。。一每个集合包含N个元素(最大1000个),值从0到2000。 前 现在对于尺寸k,例如3,A1的组合将是C1(1,2,3),C2(1,2,4),C3(2,3,4),对于A1到AN,我需要弄清楚A1中的所有组合是否也存在于A2到AN的组合中 i、 e.A1的组合C3将与A2中的组合相匹配,也可能与a中的组合相匹配。现在我需要A1的C1和C2的结果,以及A2对AN的结果。 简单而低效的方法是为所有集合A1到AN生成k大小的所有组合。然后对于A的C1,其中/如果它存在于

我有一组,A1,A2,A3。。。一每个集合包含N个元素(最大1000个),值从0到2000。 前

现在对于尺寸k,例如3,A1的组合将是C1(1,2,3),C2(1,2,4),C3(2,3,4),对于A1到AN,我需要弄清楚A1中的所有组合是否也存在于A2到AN的组合中

i、 e.A1的组合C3将与A2中的组合相匹配,也可能与a中的组合相匹配。现在我需要A1的C1和C2的结果,以及A2对AN的结果。 简单而低效的方法是为所有集合A1到AN生成k大小的所有组合。然后对于A的C1,其中/如果它存在于A2中,则为A。然后是C2,然后是C3。然后转到下一组并重复

我如何改进这个方法,因为一旦添加了一个新的集合,它需要频繁且昂贵的计算


我发现的另一个解决方案是在O(N^2+N)中运行而不进行优化,这基本上涉及到获取A1和A2的交点…AN,计算这些交点的组合,然后查看这些组合在生成的结果中出现的次数。

您可以尝试对组合进行哈希运算。 这里有两种方法,一种优化空间,另一种优化时间。 对于时间优化,您的哈希函数将为每个组合创建一个唯一的键,每当您在已占用的位置被击中时,您将知道您不是第一次遇到该组合。 对于空间优化,方法类似,但关键点不是唯一的。您必须管理一个键对应组合的列表,并在点击时遍历它以查看它是否包含您当前正在检查的组合。键的唯一性等级将定义表的大小,从而定义验证命中的时间

A1{1,2,3,4}
A2{2,4,3,5}
A3(1,2,5,6)