图G的顶点覆盖是一组顶点, 使得G中的每个边均入射到这些顶点中的至少一个顶点上。
决策顶点覆盖问题已被证明是NPC。现在, 我们要解决顶点覆盖问题的最佳版本, 即, 我们要找到给定图的最小尺寸的顶点覆盖。我们称这种顶点覆盖为最佳顶点覆盖C *。
顶点覆盖的近似算法:
Approx-Vertex-Cover (G = (V, E))
{
C = empty-set;
E'= E;
While E' is not empty do
{
Let (u, v) be any edge in E': (*)
Add u and v to C;
Remove from E' all edges incident to
u or v;
}
Return C;
}
这个想法是一个接一个的边缘(u, v), 将两个顶点都放到C上, 然后移除所有入射到u或v的边缘。我们继续进行直到所有边缘都被移除为止。 C是VC。但是C有多好?
VC = {b, c, d, e, f, g}