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

Posted

技术标签:

【中文标题】二分图中最小顶点覆盖的算法【英文标题】:Algorithm for minimum vertex cover in Bipartite graph 【发布时间】:2017-08-07 17:48:09 【问题描述】:

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

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

最大匹配 M 应确定最小值。顶点覆盖C,但我无法处理选择顶点来设置C。 比方说比普。图有 X、Y 部分,作为最大匹配边的端点的顶点在集合 A 中,不属于 B 的顶点。

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

如有任何帮助,将不胜感激。

【问题讨论】:

en.wikipedia.org/wiki/Kőnig%27s_theorem_(graph_theory) 【参考方案1】:

Kőnig's theorem 证明正是这样做的 - 从二分图中的最大匹配构建最小顶点覆盖。

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

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

然后构造你的最小顶点覆盖:

X1中找到U不匹配顶点的集合(可能为空),即。未连接到M 中的任何边 在U 中构建Z 集合或顶点,或通过交替路径(在M 的边和不在M 中的边之间交替的路径)连接到U 那么K = (X \ Z) U (Y ∩ Z)是你的最小顶点覆盖

Wikipedia 文章详细介绍了如何证明 K 确实是最小顶点覆盖。


1或者Y,都是对称的

【讨论】:

以上是关于二分图中最小顶点覆盖的算法的主要内容,如果未能解决你的问题,请参考以下文章

[整理] 二分图

图论的一些知识点

二分图的一些定理

POJ-1325 Machine Schedule 二分图匹配 最小点覆盖问题

Machine Schedule(二分图匹配之最小覆盖点,匈牙利算法)

二分图的最小顶点覆盖 最大独立集 最大团