二分图最大匹配的应用

欢迎大家访问博客:博客传送门
参考 夜深人静学算法 大佬

二分图最大匹配的应用


对于二分图最大匹配来说,更重要的是对一些实质问题的转化,比如通过求解二分图最大匹配,我们可以得到一个二分图的最小顶点覆盖,最小边覆盖,最大独立集、最大完全子图、最小路径覆盖 等等。

引理:

在二分图最大匹配中,每条匹配边连接的两个顶点 ( u , v ) (u,v) (u,v)最多只有一个与非匹配点有连边。

证明:

假设存在一条匹配边连接的两个顶点 ( u , v ) (u,v) (u,v),分别存在非匹配边 ( u , x ) (u,x) (u,x) ( v , y ) (v,y) (v,y),且 x x x y y y都是匹配点,可以让 ( u , v ) (u,v) (u,v)断开,从而成为失配边,那么 ( u , x ) (u,x) (u,x) ( v , y ) (v,y) (v,y)变成匹配边。因此此时匹配数目相对之前增加了1个,这与最大匹配矛盾。故得证

如下图所示:

image-20210714082435281

假设我们已经找到了二分图最大匹配,并且 ( 1 , 6 ) (1,6) (1,6)是匹配边, ( 1 , 8 ) (1,8) (1,8) ( 3 , 6 ) (3,6) (3,6)是非匹配边,其中 3 3 3 8 8 8是非匹配点,那么可以将 ( 1 , 8 ) (1,8) (1,8) ( 6 , 3 ) (6,3) (6,3)变成匹配边, ( 1 , 6 ) (1,6) (1,6)变成非匹配边,那么就会使得匹配数量+1,因此这与最大匹配矛盾了。


最小顶点覆盖

点覆盖的含义:一个点集合 S ⊆ V S\subseteq V SV,使得每一条边中至少有一个端点是在点集合 S S S

最小顶点覆盖的含义:选择最少的点来覆盖所有的边

如下图,最小顶点覆盖是 ( 2 , 4 , 6 ) (2,4,6) (2,4,6)三个点组成的点集。因为顶点2覆盖的边有 ( 2 , 5 ) (2,5) (2,5) ( 2 , 8 ) (2,8) (2,8),顶点4覆盖的边有 ( 4 , 7 ) (4,7) (4,7) ( 4 , 6 ) (4,6) (4,6),顶点6覆盖的边有 ( 1 , 6 ) (1,6) (1,6) ( 3 , 6 ) (3,6) (3,6),可以发现这个顶点集合就已经完全覆盖了图中所有的边,而且它也已经是最小点集了。

image-20210714084437304

结论:二分图最小顶点覆盖 = 二分图最大匹配

要想证明 = = =,那么可以先证明 ≥ \geq ,然后再证明 ≤ \leq ,由夹逼定理可知,就可以证明出 = = =

证明如下:

对于二分图 G G G,设匹配图为 M M M,最大匹配数为 m m m

  • 先来证明二分图的最小顶点覆盖$\geq 二 分 图 的 最 大 匹 配 。 我 们 可 以 构 造 一 个 点 集 , 这 个 点 集 是 从 最 大 匹 配 二分图的最大匹配。我们可以构造一个点集,这个点集是从最大匹配 M 里 面 取 出 来 的 , 对 于 每 一 条 匹 配 边 , 选 择 那 个 与 非 匹 配 点 有 连 边 的 点 ( 根 据 引 理 , 这 个 点 最 多 只 有 一 个 ) 加 入 点 集 里面取出来的,对于每一条匹配边,选择那个与非匹配点有连边的点(根据引理,这个点最多只有一个)加入点集 S ; 如 果 不 存 在 非 匹 配 点 , 也 就 是 说 这 个 二 分 图 其 实 就 是 最 大 匹 配 , 即 ;如果不存在非匹配点,也就是说这个二分图其实就是最大匹配,即 M 就 是 就是 G , 那 么 匹 配 边 的 两 侧 端 点 都 是 匹 配 点 , 因 此 我 们 只 需 要 从 这 一 条 匹 配 边 中 随 便 选 择 一 个 点 即 可 , 那 么 有 ,那么匹配边的两侧端点都是匹配点,因此我们只需要从这一条匹配边中随便选择一个点即可,那么有 便m 条 匹 配 边 , 因 此 就 需 要 选 择 条匹配边,因此就需要选择 m 个 点 来 覆 盖 。 如 上 图 所 示 : 三 条 匹 配 边 个点来覆盖。如上图所示:三条匹配边 (1,6)、(2,5)、(4,7) , 点 集 ,点集 S 构 造 的 时 候 , 构造的时候, (1,6)$这条边选择 6 6 6这个顶点, ( 2 , 5 ) (2,5) (2,5)这条边选择 2 2 2这个点, ( 4 , 7 ) (4,7) (4,7)这条边选择 4 4 4这个点。因此这种对于存在非匹配点的二分图来说,对于这 m m m条匹配边,就需要 m m m个点来覆盖,还存在非匹配边,那么可能还需要用一些点来覆盖这些匹配边,因此最小顶点集 S S S肯定是 ≥ m \geq m m的,即二分图的最小顶点覆盖$\geq $二分图的最大匹配
  • 再来证明二分图的最小顶点覆盖$\leq 二 分 图 的 最 大 匹 配 。 如 果 二分图的最大匹配。如果 G 中 的 边 除 了 中的边除了 M 中 匹 配 边 以 外 没 有 其 它 非 匹 配 边 , 那 么 最 小 顶 点 覆 盖 就 是 中匹配边以外没有其它非匹配边,那么最小顶点覆盖就是 m 。 否 则 , 还 存 在 非 匹 配 边 , 如 果 这 条 非 匹 配 边 的 两 个 端 点 都 在 非 匹 配 点 上 , 那 么 可 以 构 成 一 条 新 的 匹 配 边 , 从 而 和 最 大 匹 配 矛 盾 ; 所 以 这 些 非 匹 配 边 一 定 是 其 中 一 个 端 点 在 匹 配 点 上 , 另 一 个 端 点 在 非 匹 配 点 上 ; 令 一 条 非 匹 配 边 上 的 一 个 端 点 为 。否则,还存在非匹配边,如果这条非匹配边的两个端点都在非匹配点上,那么可以构成一条新的匹配边,从而和最大匹配矛盾;所以这些非匹配边一定是其中一个端点在匹配点上,另一个端点在非匹配点上;令一条非匹配边上的一个端点为 u , 且 ,且 u 在 非 匹 配 点 上 , 那 么 如 果 存 在 一 条 边 在非匹配点上,那么如果存在一条边 (u,v) , 点 ,点 v$必定是在我们构造出来的点集 S S S中的,于是边 ( u , v ) (u,v) (u,v)一定可以被这个点集覆盖。所以二分图的最小顶点覆盖 ≤ \leq 二分图的最大匹配

简单理解为:

  • m m m个点是必须的,即二分图的最小顶点覆盖$\geq 二 分 图 的 最 大 匹 配 。 匹 配 的 这 二分图的最大匹配。匹配的这 m 条 边 , 它 们 的 端 点 各 不 相 同 , 因 此 要 覆 盖 这 条边,它们的端点各不相同,因此要覆盖这 m 条 匹 配 边 , 就 需 至 少 需 要 条匹配边,就需至少需要 m$个点。
  • m m m个点是足够的,即二分图的最小顶点覆盖$\leq 二 分 图 的 最 大 匹 配 。 假 设 最 小 顶 点 覆 盖 为 二分图的最大匹配。假设最小顶点覆盖为 n , 那 么 一 定 可 以 构 造 出 ,那么一定可以构造出 n 条 匹 配 边 , 又 由 于 我 们 已 经 知 道 了 二 分 图 的 最 大 匹 配 是 条匹配边,又由于我们已经知道了二分图的最大匹配是 m , 也 就 是 说 最 大 匹 配 边 是 ,也就是说最大匹配边是 m , 因 此 必 定 有 ,因此必定有 n\leq m 。 即 假 设 覆 盖 完 这 。即假设覆盖完这 m 条 匹 配 边 后 , 如 果 还 有 某 条 边 条匹配边后,如果还有某条边 e 还 没 有 被 覆 盖 , 那 么 把 还没有被覆盖,那么把 e 加 入 后 会 使 得 匹 配 数 量 + 1 , 那 么 就 会 大 于 给 定 的 最 大 匹 配 数 目 加入后会使得匹配数量+1,那么就会大于给定的最大匹配数目 使+1m$,这与二分图最大匹配矛盾。

最小边覆盖

边覆盖的含义:选一条边就相当于覆盖了它的两个端点。

最小边覆盖的含义:选择最少的边集,覆盖所有的点集

如下图所示,最小边覆盖为 E = E= E={ ( 2 , 9 ) , ( 3 , 8 ) , ( 5 , 10 ) , ( 4 , 9 ) , ( 3 , 11 ) (2,9),(3,8),(5,10),(4,9),(3,11) (2,9),(3,8),(5,10),(4,9),(3,11)},答案是5。注意:孤立节点不需要用边来覆盖!

image-20210714093506209

结论:二分图的最小边覆盖 = 顶点总数 - 孤立点数 - 二分图最大匹配

证明:

为了使边数最少,又因为一条边最多能干掉两个点,所以尽量用边干掉两个点。也就是选择有匹配的那些边,因为它们一次能干掉两个节点,而且我们希望有匹配的边越多越好,那么就是最大匹配了,因为最大匹配才会有最多的匹配边。我们设左侧节点数目为 L L L,右侧节点数目为 R R R,孤立节点数目为 A A A,设二分图最大匹配数目为 M M M,节点总数就是 V = L + R V=L+R V=L+R。由于孤立节点不需要边覆盖,因此需要考虑的点有 V − A V-A VA

我们先用最大匹配边去干掉两侧的节点,那么就可以干掉 2 × M 2\times M 2×M个节点,剩下的就是要解决那些没有被匹配的点,那么这些没有被匹配的点的数目为 ( V − A ) − 2 × M (V-A)-2\times M (VA)2×M,那么这些没有被匹配的点就需要用边去覆盖,因此还需要 ( V − A ) − 2 × M (V-A)-2\times M (VA)2×M条边。因此总的需要最少的边数= M + ( V − A − 2 × M ) = V − A − M M+(V-A-2\times M)=V-A-M M+(VA2×M)=VAM,即二分图的最小边覆盖=顶点总数-孤立点数-二分图最大匹配。

如上图所示,绿色边表示匹配边,黑色边表示非匹配边。那么匹配边有3条,干掉了 2 , 3 , 5 , 8 , 9 , 10 2,3,5,8,9,10 2,3,5,8,9,10节点,那么还剩下 4 , 11 4,11 4,11没有被干掉,覆盖这两个点还需要2条边,因此最小边覆盖为 3 + 2 = 5 3+2=5 3+2=5,这正好就是 12 − 4 − 3 = 5 12-4-3=5 1243=5


最大独立集

最大独立集合含义:选取最多的点,使得图中任意两点都没有关系

如下图所示,最大独立集合为 A = A= A={ 1 , 3 , 5 , 7 , 8 1,3,5,7,8 1,3,5,7,8}

image-20210714095317247

结论:二分图的最大独立集 = 顶点总数 - 最小顶点覆盖

证明:

首先,由最小顶点覆盖的含义可知,它已经覆盖了图中的所有边,因此我们把最小顶点集 S S S中的顶点都从图中去掉,那么所有的边也就消失了,那么还剩下 V − S V-S VS个顶点,这些节点两两之间都不相邻了(因为没有边相连,不存在关联),那么这些剩余的节点就构成了一个独立集(为 A = V − S ) A=V-S) A=VS)。由这个式子可以知道,因为 V V V是定值,要想 A A A最大,那么需要 S S S最小。又由于最小顶点覆盖已经是最少的能够覆盖图中所有边的点集了,不能再少了,因此当取到最小顶点覆盖时, S S S达到最小,那么剩下的节点就是最大的。因此二分图的最大独立集 = 顶点总数 - 最小顶点覆盖

image-20210714101105273


最大完全子图(最大团)

完全图的含义:任意两点都恰有一条边相连的图(任意两点都相邻)

完全子图的含义:满足任意两点都恰有一条边相连的子图,也叫

最大完全子图的含义:所有完全子图中顶点数最大的团,即最大团。最大指的是点数最多。即选取最多的点,使得图中任意两点都有关系

如下图所示:

image-20210714102723336

图中{ a , b , d a,b,d a,b,d}, a , e {a,e} a,e c , f , g {c,f,g} c,f,g等都是完全子图,但是最大完全子图是 a , b , d , e {a,b,d,e} a,b,d,e

补图的含义:一个 n n n阶完全图中去掉原图 G G G上的所有边,剩下的所有边所构成的一个图就是该图 G G G的补图 G ′ G' G

如下图:

image-20210714104214360

结论:二分图的最大团 = 补图的最大独立集

证明:

对比最大团的含义和最大独立集的含义,我们知道它俩是相反的,那么我们就可以知道其实二分图的最大独立集的相反就是二分图的最大团。那么我们该怎么表达最大独立集的相反呢?这里就需要用到补图了。设原图为 G G G,那么原图的相反其实就是原图的补图 G ′ G' G。因此我们想要求出原图 G G G的最大团,那么就是要求出补图 G ′ G' G的最大独立集。

求最大完全子图的问题,如果不是二分图,这将是一个 NP 问题,但如果是个二分图,我们可以用上面的方法求解


有向无环图的最小路径覆盖

不相交的情况

定义:选择一些路径,覆盖所有的点集,且各路径的点集之间不允许有交集,要求路径数最少。

如下图所示,得到的路径是: ( 1 → 2 → 4 → 5 ) (1\to2\to4\to5) (1245) ( 6 → 7 ) (6\to7) (67) ( 3 ) (3) (3)。最小(不相交)路径覆盖为3

image-20210714105315325

结论:有向无环图的最小(不相交)路径覆盖 = 原图结点数 - 拆点后二分图最大匹配数

证明:

  • 初始状态,所有顶点都是一条路径,那么总共有 n n n条路径

    image-20210714111347242

  • 每当增加一对匹配时,对应到原图中就是用一条边连接了两个节点,并且这两个结点一定不在同一个连通块(下文会证明),那么总的连通块数目减一(比如连接节点1和节点2,那么此时它俩处于同一个连通块,但它俩原来都是独立的连通块),也就是路径数目减一(二分图里找一条匹配边就相当于把两条路径合成了一条路径);所以找到了几条匹配边,路径数就减少了多少。那么要想使得路径数最少,那么应该有更多的匹配边,因此想到应该是二分图的最大匹配。所以有最小路径覆盖=原图的结点数-拆点后新图的最大匹配数。

  • image-20210714111920874

证明:每增加一条匹配边,在原图中的两个点必然不在一个连通块内

  • 每增加一对匹配边: u l → v r u_l\to v_r ulvr,对应原图中就是增加了一条 u → v u\to v uv的边,反证法:假设 u u u v v v在同一个连通块内,那么会有如下的四种情况(橙色边为原本的连接情况,红色边为当前增加匹配后增加的新边):

    image-20210714112425763

  • (a)如上图,对于节点 u u u来说,它有两条出边,对于节点 v v v来说,它有两条入边,但是对于二分图匹配来说,两个节点之间应该是只有一条出边和一条入边,因此这与 二分图匹配的 定义矛盾,因此,这种情况是不合法的

  • (b)如上图,节点 u , v u,v u,v产生了圈,形成了环,这与 二分图匹配的 定义矛盾,因此,这种情况是不合法的

  • ©如上图,对于节点 u u u来说,它有两条出边,分别连向两点不同的节点,这对应到二分图和两个点进行了匹配,但在二分图匹配中,是一夫一妻制,而不能一夫多妻,因此这与 二分图匹配的 定义矛盾,因此,这种情况是不合法的

  • (d)如上图,对于节点 v v v来说,它有两条入边,分别有两个不同的节点指向它,这对应到二分图和两个点进行了匹配,但在二分图匹配中,是一妻一夫制,而不是一妻多夫,因此这与 二分图匹配的 定义矛盾,因此,这种情况是不合法的

  • 基于以上四种情况都不合法,所以每增加一条匹配边,在原图中的两个点必然不在一个连通块内,得证

举个栗子:

首先将每个节点 u u u拆成两个节点 u l u_l ul u r u_r ur,如果原图存在边 u → v u\to v uv,则在拆点后的图上建立边: u l → v r u_l\to v_r ulvr。由于原图是有向无环图,所以拆点后的图是一个二分图。如图所示:

image-20210714141226353

对拆点后的图求一次二分图最大匹配,得到:

image-20210714141427393

那么有向无环图的最小(不相交)路径覆盖 = 原图结点数 - 拆点后二分图最大匹配数= 7 − 4 = 3 7-4=3 74=3

相交的情况

定义:选择一些路径,覆盖所有的点集,且各路径的点集之间允许有交集,要求路径数最少。

举个栗子:

如下图所示,得到的路径为: ( 1 → 2 → 4 → 5 ) (1\to 2\to 4\to 5) (1245) ( 3 → 4 → 6 → 7 ) (3\to 4\to 6\to 7) (3467),最小(相交)路径覆盖为2

image-20210714142307071

结论:首先对原图求一次传递闭包得到一个新图,有向无环图的最小(相交)路径覆盖 = 新图结点数 - 拆点后二分图最大匹配数

证明:

因为路径之间是允许相交的,所以对于 2 条路径 x → p → y x\to p\to y xpy a → p → b a\to p\to b apb,那么多建立两条边 ( x → y ) (x\to y) (xy) ( a → b ) (a\to b) (ab),那么我们发现 x → y x\to y xy其实是 x → p x\to p xp p → y p\to y py求传递闭包得到的,同理分析 a → b a\to b ab也是求传递闭包得到的。对图中所有的这样的边都这样操作一次,相当于求了一个传递闭包。然后再求拆点二分图的最大匹配,就可以当成求最小不相交路径覆盖的情况来求解了。


总结

  1. 二分图最小顶点覆盖 = 二分图最大匹配
  2. 二分图的最小边覆盖 = 顶点总数 - 孤立点数 - 二分图最大匹配
  3. 二分图的最大独立集 = 顶点总数 - 最小顶点覆盖
  4. 有向无环图的最小(不相交)路径覆盖 = 原图结点数 - 拆点后二分图最大匹配数
  5. 首先对原图求一次传递闭包得到一个新图,有向无环图的最小(相交)路径覆盖 = 新图结点数 - 拆点后二分图最大匹配数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卷心菜不卷Iris

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值