二分图总结

在图论中,匹配是指两两没有公共点的边集。
最大匹配即为包含边数尽量多的边集。
匈牙利算法主要流程是不断地寻找增广路进行增广。时间复杂度O(NM)。
当然,这个问题也可以用网络流来求解。假设两个点集分别为A和B,S向A连流量为1的边,A向B在原边集的基础上连流量为1的边,B向T连流量为1的边。跑S到T的最大流即为最大匹配边集中的边数。
由A连向B的边中,残量为0的边即为匹配边。
上述算法用Dinic实现的复杂度为O(N^0.5M)。

所以匈牙利算法不如dinic快;
匈牙利算法看代码一看明了忘不了;

定义一个点能够覆盖以之为端点的所有边。
定义点覆盖为覆盖图所有边的点集。
最小点覆盖即为包含点数尽量少的点集。
二分图的最大匹配集合数值上等于最小点覆盖的大小。
用网络流求解时,假设S-T割把原图分成两个连通块S集和T集,那么(B∩S)∪(A∩T)即为一个最小点覆盖。

为什么最大匹配=最小点覆盖;
因为如果
最大匹配<最小点覆盖
简单来说,就是一个点必定覆盖1个匹配,这个自己脑补把;

独立集是两两没有公共边的点集。
最大独立集即为点数尽量多的独立集。
二分图的最大独立集等于二分图最小点覆盖关于全点集的补集。

这个也比较显然把;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值