不同代表的系统能够有效解决吗?

时间:2013-03-05 08:19:58

标签: algorithm complexity-theory

我们设置 S 1 S 2 ,..., S 名词 的。这些集合不必是不相交的。我们的任务是为每个集合选择一个代表成员,以便所选元素的总数尽可能小。一个元素可以存在于多个集合中,并且可以表示它所包含的所有集合。是否有算法可以有效地解决这个问题?

4 个答案:

答案 0 :(得分:8)

重述后更容易回答这个问题:让原始集 S 1 S 2 ,..., S n 是宇宙的元素,让原始集成员自己设置: T 1 T 2 ,..., T m (其中 T i 包含元素{ S j },它们是包含相应成员的原始集合。

现在我们必须涵盖宇宙 S 1 S 2 ,..., S n 具有集合 T 1 T 2 ,. .., T m 。这正是Set cover problem。这是一个众所周知的NP难问题,因此没有算法可以有效地解决它(除非P = NP,正如理论家通常所说)。从维基百科页面可以看出,有一种贪婪的近似算法;它是有效的,但近似比率不是很好。

答案 1 :(得分:2)

不是为了窃取叶夫根尼的荣耀,但这里有一种相当简单的方式,可能更严格地表明海报问题的一般情况是NP难的。

考虑minimum vertex cover V 中从顶点 V 中找到最小集合 X simple graph问题, E )其中E中的每个边都与 X 中的至少一个顶点相邻。

边可以用无序的双元素集{ v a v b }来表示其中 v a v b V 中的不同元素。注意,表示为{ v a v b }的边 e 是当且仅当 v c 是{ v 的元素时,与 v c 相邻a v b }。

因此,最小顶点覆盖问题与找到 V 的最小尺寸子集 X 相同,其中每个边集{ v a <由 E 中的边定义的/ sub> v b }包含 X中的元素

如果有一个算法可以有效地解决原始陈述的问题,那么就有一个算法可以有效地解决上述问题,因此也可以有效地解决最小顶点覆盖问题。

答案 2 :(得分:2)

我假设“有效”,你的意思是多项式时间。

Evgeny Kluev是正确的,问题是NP难。它的决定版本被称为hitting set problem,并且在引入该概念后很快就被证明是我们现在所称的NP-complete。虽然Evgeny的减少是从击中集问题到集合覆盖问题,但不难看出明显的反向减少。

给定一组C = {C 1 ,C 2 ,... C m },其联合为U = {u < sub> 1 ,u 2 ,...,u n },我们想找到一个最小基数子集C',其并集也等于U.在初始问题中将S i 定义为C中的{C j | u i 是C j }的元素。 S = {S 1 ,S 2 ,...,S n }的最小命中集等于我们想要的C'

答案 3 :(得分:1)

要考虑的几种算法是模拟退火和遗传算法,如果你可以使用接近最优的解决方案(它们可能会为你提供最佳解决方案,但不一定)。模拟退火可以用于生产电子CAD自动放置(因为我是Wintek自动放置计划开发团队的一员)。