独立顶点覆盖算法

时间:2012-05-26 21:34:28

标签: algorithm graph

Skiena关于算法的书的问题:

图G =(V,E)的顶点覆盖是顶点V∈V的子集,使得E中的每个边包含来自V的至少一个顶点。一组独立的图G =(V,E)是顶点V∈V的子集,因此E中没有边包含来自V的两个顶点

独立顶点覆盖是顶点的子集,它们都是一个独立的集合 和G的顶点覆盖。给出一个有效的算法来测试G是否包含 一个独立的顶点覆盖。这个经典图形问题会减少到什么?

有谁知道这个问题的答案?

感谢。

更新

(需要有关这个想法的建议)

到目前为止,我认为这与检查图表是否可以使用2种颜色着色有关,即它是否为二分?如果使用BFS变体为图形着色,比如说白色和黑色,那么使用其中一种颜色(例如白色)的顶点在某些情况下也会形成顶点覆盖。

2 个答案:

答案 0 :(得分:4)

你的想法是正确的。这是检查给定图表是否为bipartite的问题。

Bipartite图形没有奇数长度的循环,因此如果使用BFS为图形着色,则相同颜色的顶点将是独立的集合。

来自维基百科:

  

如果连接了二分图,则可以通过定义其二分图   与任意选择的顶点v的距离的奇偶校验:1   子集由与v和另一个距离均匀的顶点组成   子集由与v的奇数距离的顶点组成。

     

因此,可以通过使用有效地测试图是否是二分图   这种奇偶校验技术将顶点分配给两个子集U和V,   分别在图的每个连通分量内,然后   检查每个边缘以验证它是否分配了端点   不同的子集。

有趣的事实是,独立集合也是Np-complete和顶点覆盖,但验证图形是否为二分图是plynomial。

将来,对于这样的问题,https://cs.stackexchange.com/也是一个值得讨论的好地方。

答案 1 :(得分:0)

* 独立顶点覆盖=二分图+最小顶点覆盖? *关于同样的问题