查找代表所有集的元素

时间:2013-12-05 18:01:36

标签: algorithm language-agnostic set

如何调用以下问题以及哪些算法可以解决此问题?

设置:我有一组项目(即标志),每个项目由几个未排序的元素(即颜色)组成。

问题:如何找到最小的元素集,使每个项目在我的最小集合中至少有一个元素?即给我最少数量的颜色,这样每个标志至少有一种颜色与我的最小颜色相同。

这与this问题类似或相同,尽管(对我而言)答案并未提供可行的算法。

实施例

我们假设我们有三个标志,并且让颜色的阴影处理为相同的颜色:

保加利亚,巴林和牙买加

Bulgaria Bahrain Jamaica

可能的解决方案是:

  • [白色或红色]和[黄色,黑色或绿色]:因为白色和红色都在保加利亚和巴林,因为黄色,黑色和绿色都在牙买加。

1 个答案:

答案 0 :(得分:2)

这是minimum hitting set问题,它是NP完全的。它相当于Set cover problem(即两者可以相互converted)。

由于它是NP完全的,因此没有已知的多项式算法。维基百科提供了greedy algorithm来获得近似结果。对于确切的最小值,您可能必须使用指数时间解决方案,例如枚举所有可能性。