二分图相关问题小结
来源:互联网 发布:wps多个表格数据汇总 编辑:程序博客网 时间:2024/06/10 08:47
从听课开始花了一天半时间来研究二分图有关的问题。
【关键词】
1、二分图
2、最大匹配
3、König定理与其他相关定理
4、最优匹配(最大权匹配)
一、二分图
概念:一个图G可以分成两个点集,使得仅这两个点集之间有边,点集内部没有连边。更严谨一点,没有奇环的图是二分图。
判定:从任意一点开始进行黑白染色,出现矛盾则不是二分图。
二、二分图最大匹配
概念:求得一种匹配方案使得尽可能多的点仅与相对点集的另一个点有连边。
算法:匈牙利算法,时间复杂度O(VE)。
算法思路:从每一个点开始找增广路,用dfs实现。
核心代码:
bool dfs(int x){for(int i=0;i<edge[x].size();i++){int nex=edge[x][i];if(vis[nex]) continue;vis[nex]=1;if(!match[nex] || dfs(match[nex])){match[nex]=x;return true;}}return false;}
三、König定理与其他相关定理
注:以下说法除特殊说明外均为二分图。
König定理:最小顶点覆盖=最大匹配。
证明:因为二分图的最大匹配涉及的边两两无关,所以至少要选择最大匹配数的顶点才能完成最小顶点覆盖。若还有一条边(u,v)没有被覆盖,那么显然这条边也是最大匹配中的边,结论成立。
其他定理:
最大独立集:选出一个点数最多的点集,使得这些点之间两两均无边连接。
最大独立集=节点数-最大匹配数。
最小边覆盖:用最少的边覆盖所有顶点。
最小边覆盖=最大独立集=节点数-最大匹配数。
最小路径覆盖:在DAG中选出最少的不交叉路径覆盖所有顶点。
将DAG转化为二分图,每个点拆成入点和出点两个点,对于一条路径(u,v),从u的出点连向v的入点即可。
同最小边覆盖。
剩余的最大团之类的后续填坑。
四、最优匹配(又称最大权匹配)
概念:一个二分图,每条边有权值,求一个权值和最大的匹配。
算法:KM算法,讲解见这里
相关题目
一、矩阵的行列匹配问题
bzoj1059
bzoj4950
bzoj3140(好题)
此类问题一般都是比较难看出二分图的构图方式和模型,看出来了就比较简单解决。
二、定理题
最小路径覆盖
bzoj1143
bzoj2150
hdu1151
本质上都是一类问题。
最小顶点覆盖
hdu1150
三、最优匹配问题
bzoj1520
bzoj4819
总结
1、二分图的模型一般隐藏的比较深,一定要仔细观察。
2、熟记套路,比如行列,男女,黑白等。
3、灵活运用,不能死磕模板。
阅读全文
0 0
- 二分图相关问题小结
- 二分图最大匹配相关问题
- 二分搜索相关问题
- 二分图小结
- 二分图学习小结
- 二分图小结
- 二分图小结
- SAE Java相关问题小结
- 书写论文相关问题小结
- python 排列相关问题小结
- 二分图相关知识
- 二分图相关
- 二分图相关题
- 二分图相关性质
- 二分图匹配相关
- 二分图匹配相关
- 二分图相关
- 二分图小结-poj.3020
- OKhttpClient 简单使用总结
- 贪心专练3 最小标记数问题
- Java NIO系列教程(十一) Pipe
- Vue的路由钩子
- linux定时执行脚本
- 二分图相关问题小结
- 征信“花”一点,才更容易借到钱!
- Linux下搭建单机Oracle11.2数据库
- Keras之父:大多数深度学习论文都是垃圾,炒作AI危害很大
- SLAM的现在与未来
- Java NIO系列教程(十二) Java NIO与IO
- 他们是新零售推手
- 第三周 【项目4
- python 函数 课堂笔记 12.21