二分图中最小顶点覆盖算法

时间:2017-03-16 13:51:44

标签: algorithm graph-theory matching bipartite vertex-cover

我试图找出一种算法来找到二分图的最小顶点覆盖。

我正在考虑一个解决方案,它将问题减少到二分图中的最大匹配。众所周知,可以使用从bip创建的networ中的最大流量来找到它。曲线图。

最大匹配M应确定最小值。顶点覆盖C,但我无法应对选择顶点来设置C. 让我们说bip。图中有部分X,Y和顶点是最大匹配边的端点在集A中,那些不属于B的那些。

我想说我应该为M到C中的边选择一个顶点。 特别是M中边缘e的端点连接到集合B中的顶点,否则如果它仅连接到A中的顶点则无关紧要。 遗憾的是,这个想法并不常用,因为我的算法可以找到反例,因为A中的顶点也可以通过其他边连接,而不是包含在M中的边。

任何帮助都会得到满足。

1 个答案:

答案 0 :(得分:0)

Kőnig's theorem证明确实做到了-从二分图中的最大匹配建立最小的顶点覆盖。

假设您有一个G = (V, E)的二分图,它在XY之间隔开。

正如您所说,首先必须找到最大匹配项(例如,可以使用Dinic's algorithm实现)。我们称此最大匹配为M

然后构建最小的顶点覆盖范围:

  • U 1 中找到X不匹配顶点的集合(可能为空),即。未连接到M
  • 中的任何边缘
  • Z中建立U的集合或顶点,或通过交替路径(在U的边缘和不在{{ 1}})
  • 然后M是您的最小顶点覆盖范围

维基百科上的文章详细介绍了如何证明M确实是最小的顶点覆盖范围。


1 或Y,都是对称的