为了覆盖范围,我有一组来自我的程序执行的运行时变量。碰巧我从一系列的执行(自动化测试)中得到了它。即。它是一个vector<vector<var,value>>
我有一组有限的变量和期望值并生成组合,也就是说,我有vector<vector<var,value>(smaller than the execution vector)>
。现在我需要比较和辨别我生成的哪些组合是在其中一个测试中准确执行的。
我的算法是O(n^4)。有没有办法把它降下来。就像集合交集。我使用java和向量是因为线程安全。
Eloboration:我的程序中有很大一部分变量。我不关心他们所有的人。我所关心的是一组变量,这些变量的值是我知道的(边缘值和开发人员给出的值)。我所做的是,为这些变量和值生成一组组合,我认为这可能是有意义的,因为在自动化测试之后,告诉我这些组合已经执行,而有些没有执行,这将是有用的。
因为测试是自动化的,所以我用我在问题中给出的DS中的所有变量和值执行了一系列(<20)执行。我的问题是将一小部分组合与一大部分组合进行比较。哈希可能会工作,如果没有。的变量,我想是一样的。我的算法是蛮力
发布于 2010-03-12 13:26:28
我将从对的组合生成散列,如果两个组合相等,则它们具有相同的散列。如果您期望的组合集很小,那么您可以使用此散列作为Hashmap的键。
对于执行向量中的每个组合,生成散列键并在hashmap中查找它。Hashmap查找的分期时间为O(1),因此对于n个执行条目和k个预期组合,总时间为O(n+k)。
在选择哈希函数时必须小心,以避免冲突,但这应该不是一个太难的问题。
https://stackoverflow.com/questions/2431749
复制