二分图中最小顶点覆盖的算法
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)
一个二分图,分隔在X
和Y
之间。
正如您所说,首先您必须找到最大匹配(例如,可以使用Dinic's algorithm 来实现)。我们将这个最大匹配称为M
。
然后构造你的最小顶点覆盖:
在X
1中找到U
不匹配顶点的集合(可能为空),即。未连接到M
中的任何边
在U
中构建Z
集合或顶点,或通过交替路径(在M
的边和不在M
中的边之间交替的路径)连接到U
那么K = (X \ Z) U (Y ∩ Z)
是你的最小顶点覆盖
Wikipedia 文章详细介绍了如何证明 K
确实是最小顶点覆盖。
1或者Y,都是对称的
【讨论】:
以上是关于二分图中最小顶点覆盖的算法的主要内容,如果未能解决你的问题,请参考以下文章
POJ-1325 Machine Schedule 二分图匹配 最小点覆盖问题