二分图匹配笔记(二)

3. 二分图匹配最大相关问题

3.1 二分图最大点独立集

点独立集:图的顶点集的一个子集,其中任意两点之间没有边相连。

二分图最大点独立集 = 顶点总数 - 最大匹配数

证明:设一个二分图的顶点集合为\(V\),最大匹配为\(M\),匹配的顶点集合为\(V_M\),则有\(|V_M|=2|M|\)。设最大独立集为\(U\),证明\(|U|=|V|-|M|\)

由二分图和最大匹配的定义可知,
\[ |U| \geqslant |V| - |V_M| \]

现依次从最大匹配\(M\)中匹配的每一对点中取一个放入独立集\(U\)中。设\(u\)\(v\)是匹配的两个点,\((u,v) \in M\),则\(u\)\(v\)不可能同时与未匹配的点有边相连,否则还存在一条交错路,与最大匹配的相矛盾。于是把没有与未匹配点相连的点加入独立集中。重复下去,直到每一对匹配点中都有一个点加入了独立集中。此时有,
\[ |U| \geqslant |V| - |V| \]

此时再向\(U\)中加入任何一个点都会与已有的点有匹配边,亦有
\[ |U| \leqslant |V| - |M| \]

因此\(|U|=|V|-|M|\),得征。

例题 HDU 1068 Girls and Boys

Description

\(n\)个同学,一些男女同学会有缘分成为情侣,已知每一位同学有缘分成为情侣的对象,求集合中不存在有缘成为情侣的同学的最大同学数。

Solution

二分图最大点独立集

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

路径覆盖:一个有向图中的一些路径,它们覆盖了图中所有的点,且任何一个顶点只有一条路径与之关联。

有向无环图最小路径覆盖 = 顶点总数 - 对应二分图的最大匹配数

证明:初始时\(n\)个点每个点自己就是一条路径覆盖,每添加一条有向边,路径覆盖数就减一。因此路径覆盖数=顶点总数-添加的有向边数。最多的有向边就对应最小的路径覆盖。下面通过建图将每一条有向边转化为二分图中的一条边。

建图:输入一个有\(n\)个点的有向无环图,把图中的每个顶点\(u\)拆分为两个顶点\(u'\)\(u''\),对于原图中的每条边\((u,v)\),就建一条从\(u'\)\(v''\)的边,这样就转化为了一个总共有\(2n\)个结点的二分图。二分图中的每条匹配边,对应有向图中选出的一条有向边,路径覆盖中每个点只能属于一个路径覆盖,对应在匹配中每个点只能使用一次。

例题 HDU 1151 Air Raid

Description

在一个城镇,有\(n\)个路口和\(m\)条路,这些路都是单向的,而且路不会形成环.现在要弄一些伞兵去巡查这个城镇,伞兵只能沿着路的方向走,问最少需要多少伞兵才能把所有的路口城镇搜一遍。

Solution

有向无环图最小路径覆盖

转载于:https://www.cnblogs.com/dadamrx/p/7400679.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值