当前位置:   article > 正文

网络流之 - 匹配、边覆盖、独立集、顶点覆盖_匹配与边覆盖的关系

匹配与边覆盖的关系

转载自:https://blog.sengxian.com/algorithms/networkflow-variants

在图论中有以下几个概念,它们之前的关系往往容易弄混淆,这里稍稍证明以下。
先放出概念-来自日本人的书。

概念

  • 匹配 : 在 G G G 中两两没有公共端点的边集合 M ⊆ E M \subseteq E ME
  • 边覆盖:在 G G G 中的任意顶点都至少是 F F F中某条边的端点的 边集合 F ⊆ E F \subseteq E FE (边覆盖所有点)。
  • 独立集:在 G G G 中两两互不相连的顶点集合 S ⊆ V S \subseteq V SV
  • 顶点覆盖:在 G G G 中的任意边都有至少一个端点属于 S S S 的顶点集合 S ⊆ V S \subseteq V SV(顶点覆盖所有边)。
    与之对应的,有最大匹配 M m a x M_{max} Mmax,最小边覆盖 F m i n F_{min} Fmin,最大独立集 S m a x S_{max} Smax、最小顶点覆盖 S m i n S_{min} Smin的概念,不过这个应该很好理解。

关系

它们之间是满足一些关系的。(废话

最大匹配与最小边覆盖:
对于任意无孤立点的图而言
∣ M m a x ∣ + ∣ F m i n ∣ = ∣ V ∣ \vert M_{max} \vert + \vert F_{min} \vert = \vert V \vert Mmax+Fmin=V
用文字描述就是:「最大匹配数 + 最小边覆盖数 = 顶点数」

证明

设最大匹配为 M m a x M_{max} Mmax,最小边覆盖为 F m i n F_{min} Fmin
根据定义,最大匹配 M M M 中所有的边共覆盖了 2 × ∣ M m a x ∣ 2 \times \vert M_{max} \vert 2×Mmax个顶点。
既然已经覆盖了 2 × ∣ M m a x ∣ 2 \times \vert M_{max}\vert 2×Mmax 个顶点。
那么还有 ∣ V ∣ − 2 × ∣ M m a x ∣ \vert V \vert - 2 \times \vert M_{max} \vert V2×Mmax个顶点未被覆盖。
我们在最大匹配的基础上加边,每加一条边最多可以扩展 1 1 1 个顶点(如果能扩展 2 2 2 个说明不是最大匹配),则最少要加 ∣ V ∣ − 2 × ∣ M m a x ∣ \vert V \vert - 2 \times \vert M_{max} \vert V2×Mmax条边。
所以 ∣ F m i n ∣ = ∣ V ∣ − 2 × ∣ M m a x ∣ + ∣ M m a x ∣ = ∣ V ∣ − ∣ M m a x ∣ \vert F_{min} \vert = \vert V \vert - 2 \times \vert M_{max} \vert + \vert M_{max} \vert = \vert V \vert - \vert M_{max} \vert Fmin=V2×Mmax+Mmax=VMmax
得到 ∣ M m a x ∣ + ∣ F m i n ∣ = ∣ V ∣ \vert M_{max} \vert + \vert F_{min} \vert = \vert V \vert Mmax+Fmin=V
证毕。
最大独立集与最小顶点覆盖
对于任意图(无所谓联通)而言
∣ S m a x ∣ + ∣ S m i n ∣ = ∣ V ∣ \vert S_{max} \vert + \vert S_{min} \vert = \vert V \vert Smax+Smin=V
用文字描述就是「最大独立集数 + 最小顶点覆盖数 = 顶点数」。与之前的不同,这里的集合都是针对顶点的集合。

证明

设任意独立集 S S S
则其补集 ∁ V S \complement_{V}S VS必定与 S S S 中所有点之间有边联通( S S S 中孤立点除外,但孤立点无边与之连接,不影响)。
根据独立集定义,任何 S S S中顶点没有边联通,所以任意边的端点一定有一个属于 ∁ V S \complement_{V}S VS
所以 ∁ V S \complement_{V}S VS 是一个顶点覆盖。
这就证明了 S S S G G G的独立集 -> ∁ V S \complement_{V}S VS G G G的顶点覆盖。
根据补集的定义,有 ∣ S ∣ + ∣ ∁ V S ∣ = ∣ V ∣ \vert S \vert + \vert \complement_{V}S \vert = \vert V \vert S+VS=V
变形得到 ∣ ∁ V S ∣ = ∣ V ∣ − ∣ S ∣ \vert \complement_{V}S \vert = \vert V \vert - \vert S \vert VS=VS
所以当且仅当 S S S 为最大独立集时, ∁ V S \complement_{V}S VS 为最小顶点覆盖。
∣ S m a x ∣ + ∣ S m i n ∣ = ∣ V ∣ \vert S_{max} \vert + \vert S_{min} \vert = \vert V \vert Smax+Smin=V
证毕。

求解

借助这些关系,对于有最大匹配与最小边覆盖,最大独立集与最小顶点覆盖,求解出一个就可以求解出另一个。
对于最大匹配问题,二分图可以转化为网络流,一般图则一般用开花树( E d m o n d s Edmonds Edmonds)算法解决。
而对于最大独立集和最小顶点覆盖,却无法高效求解,他们是 N P NP NP困难的。不过,对于二分图而言:
∣ M m a x ∣ = ∣ S m i n ∣ \vert M_{max} \vert = \vert S_{min}\vert Mmax=Smin
​文字描述就是「最大匹配数 = 最小顶点覆盖数」。

这也被称为是二分图匹配的 König 定理。关于证明,请移步 :http://www.matrix67.com/blog/archives/116

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/378696
推荐阅读
相关标签
  

闽ICP备14008679号