集合覆盖 顶点覆盖: set cover和vertex cover
这里将讲解一下npc问题中set cover和vertex cover分别是什么。
set cover:
问题定义:
实例:现在有一个集合A,其中包含了m个元素(注意,集合是无序的,并且包含的元素也是不相同的),现在n个集合,分别为B1、B2、...、Bn。并且这n个集合的并集恰好等于A集合,即:B1UB2UB3U...UBn=A。
问题:是否存在B集合的最小子集,且他们的并集也等于A集合?
例子:集合A={1,2,3,4,5},集合B={{1,2,3},{2,4},{3,4},{4,5}}。可以看出,B集合的并集恰好等于A集合,那么问题的解是:SETCOVER={{1,2,3},{4,5}}。
vertex cover:
问题定义:
实例:图G=(V,E)。
问题:是否存在V的子集V',使得|V'|<=|V|,并且G中的每条边e,至少有一个顶点在V'中?
这个问题有一个npo(np optimization problem)的变种,即:找到满足条件的最小顶点集,也就是使得满足条件下最小|V'|值。
首先可以看出,这是两类完全不同的问题,set cover属于集合一类问题,应用于计算机科学以及计算理论方面。vertex cover,属于图论一类问题,应用于计算机科学、计算理论、图论、数学等等方面。
如果这篇文章帮助到了你,你可以请作者喝一杯咖啡