对于覆盖,我有一组来自程序执行的运行时变量。碰巧我从一系列执行中得到它(自动化测试)。即。它是vector<vector<var,value>>
我有一组有限的变量和预期值并生成组合s,即我有vector<vector<var,value>(smaller than the execution vector)>
。现在我需要比较并告诉我生成的哪个组合在其中一个测试中完全执行。
我的算法是O(n ^ 4)。有没有办法让它失望。像集合交集的东西。我正在使用java和vector,因为线程安全。
Eloboration:我的程序中有很多变量。我不关心他们所有人。我所关心的是一组变量,其中包含我知道的值(边值和开发人员给定的值)。我所做的是,为那些带有值的变量生成一组组合,我认为这可能是有意义的,因为它在自动化测试后会很有用,告诉我这些组合已经完成,有些则没有。
因为,测试是自动化的,我有一系列(&lt; 20)执行,其中包含我在问题中给出的DS中的所有变量和值。我的问题是将一小组组合与一大组进行比较。哈希可能会工作,如果没有。我想,变量是相同的。我的算法是蛮力
答案 0 :(得分:0)
我会从对的组合生成散列,这样如果两个组合相等,那么它们具有相同的散列。如果您的预期组合集很小,那么您可以使用此哈希作为Hashmap的键。
对于执行向量中的每个组合,生成散列键并在散列映射中查找它。 Hashmap查找的摊位时间为O(1),因此对于n个执行条目和k个预期组合,总时间为O(n + k)。
在选择哈希函数时必须注意避免冲突,但这不应该是一个问题。