最小k子集交集

问题描述

给定 n 个子集 (T1,T2... Tn) s.t.每个子集都有从 [1 到 p] 的元素(其中 p 可能给出也可能不给出)。用户可以指定任何 k (s.t. k

原始问题:从 n 个随机生成的测试用例中找出 k 个测试用例,在任何代码生成的行覆盖率与 n 个测试用例的覆盖率最接近。使用 gcov 确定哪些测试用例无法覆盖哪些行。

说:一个程序有 6 行(为简单起见),我们对其进行了 3 次测试。运行测试 1 后,T1={1,2,3},即,在测试 1 完成后,第 1-3 行没有被覆盖/执行。我们分别运行测试 2 和 3 以获得 T2={4,5,6} 和 T3={2,4}。现在,用户可以提及 k 的任何值,我们必须在 n 个测试用例中给出 k 个最接近所有测试用例的值。

当我们同时运行 T1 和 T2 时,T1 覆盖 4,6 但不覆盖 1,3,T2 覆盖 1,3 但不覆盖 4,6。因此,T1 和 T2 覆盖 1,3,4,6 并且至少一次没有任何东西被发现。 T1 ∩ T2 和 T1 ∩ T2 ∩ T3,都产生 ∅。

现在,对于 k=1,最佳答案是:T3(基数 = 2), 对于 k=2,最佳答案是:T1 和 T2,因为 T1 ∩ T2 产生 ∅(因为它涵盖了所有)。最后,对于 k=3,选择所有 T1、T2 和 T3,因为交集将是 ∅(零基数)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)