在n组中至少有一个元素的最小集合

时间:2018-01-07 17:23:11

标签: algorithm

我正在解决一个算法问题并设法分解它。 这是我遇到的子问题:

我有n套,假设{1,2},{2,3},{3,4}我需要找到在这n组中每个都至少有一个元素的最小集合,这里的解决方案是:{2,3}

这不是一个贪婪的问题,考虑{1},{1,3},{1,3,4},{2,3,4},{2,3},{2}解决方案是{1,2},即使3的频率最高。

也许这个算法也有一个共同的名称,我试图搜索,但没有找到任何有用的东西。

1 个答案:

答案 0 :(得分:4)

这听起来像minimum vertex cover problem,这是NP完全的。

如果它们在同一个集合中共存,则让每个值都是顶点并且两个顶点相邻。通过这种结构,任何组中的任何元件与盖顶点之间的距离最多为1,因此最小顶点盖将覆盖这些组。考虑它的另一种方法是,如果一个集合不包含覆盖顶点,那么集合中必须至少有一个边缘不包括构造的覆盖顶点。这与cover属性相矛盾,但是因此每个set都包含一个覆盖顶点。