给出一个有效的贪婪算法,在线性时间内找到树的最佳顶点覆盖

时间:2014-11-18 02:18:38

标签: algorithm greedy vertex-cover

我正试图解决这个问题...... 下面提到的是一种算法......我想出来了..

输入图表  选择与所有其他节点匹配程度最高的顶点。  删除此节点上发生的边缘。  将选定的顶点及其边添加到集X.  返回X

其中X返回顶点覆盖所需的最小顶点集。这样正确......? 谢谢

1 个答案:

答案 0 :(得分:2)

选择具有最高度数的顶点无法保证提供最佳解决方案。例如, 你有一个有7个顶点的树,边列如下:

1 2 // (1,2) is connected.
1 3
1 4
2 5
3 6
4 7

最小顶点覆盖是{2,3,4},但是,根据你的贪婪方法,你将首先选择{1},然后你将选择至少3个顶点来覆盖左边3个边缘。

实际上,有一种贪婪的算法可以解决树的顶点覆盖问题,也就是说你在每一步都找到了一个叶子(因为输入是一棵树,除非没有边缘,你总能找到这样的叶子) ,然后选择叶子的邻居到顶点覆盖集合X.当图表为空时,返回X作为最小顶点覆盖。当E = V-1时,复杂度为O(E),因此我们可以说它是线性解。