问题描述:无向图G=(V,E)的顶点覆盖是它的顶点集V的一个子集V’包含于V,使得若(u,v)是G的一条边,则v∈V’或u∈V’。顶点覆盖V’的大小是它所包含的顶点个数|V’|。
下面的近似算法以无向图G为输入,并计算出G的近似最优顶点覆盖,可以保证计算出的近似最优顶点覆盖大小不会超过最小顶点覆盖大小的2倍。
VertexSet approxVertexCover ( Graph g ) { cset=空集; e1=g.e; while (e1 != 空集) { 从e1中任取一条边(u,v); cset=cset∪{u,v}; 从e1中删去与u和v相关联的所有边; } return c }