【问题标题】: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 中包含的其他边连接。

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

【问题讨论】:

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


【解决方案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,都是对称的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-26
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 2010-10-29
    • 2015-02-15
    相关资源
    最近更新 更多