匈牙利算法与增广路径
来源:互联网 发布:迁都南京 知乎 编辑:程序博客网 时间:2024/05/23 11:36
利用匈牙利算法可以求得二分图最大匹配。
匈牙利算法的基本原理如下:
①置M为空;
②找到一条增广路径P,通过异或操作获得更大的匹配M'代替M;
③重复②直到找不到新的增广路径。
增广路径的定义如下:
若P是图G中一条联通两个未匹配顶点的路径,且属于M的边和不属于M的边在P上交替出现,则称P为相对于M的一条增广路径。
上个图理解一下:
①初始状态
当前已有边(1,1')和(4,3')属于M。
②找到一条增广路径P
如图,增广路径P为:(3 - 1' - 1 - 3' - 4 - 4')。其中,不属于M的路径有:(3, 1')、(1, 3')和(4, 4'),属于M的路径有(1‘, 1)和(3', 4)。显然,在上面的路径P中,不属于M的路径和属于M的路径是交替出现的。[3-1'(蓝), 1'-1(黑), 1-3'(蓝), 3'-4(黑), 4-4'(蓝)]
③对第②步中的图进行取反,将原来属于M的路径去除,将原来不属于M的路径加入M中。(即蓝色的边变成黑色,黑色的边变成蓝色)
④完成。
最后再看一下由增广路径的定义可以推出的三个结论:
①P的路径长度必定为奇数,第一条边和最后一条边都不属于M
②P经过取反操作可以得到一个更大的匹配M
③M为G的最大匹配当且仅当不存在相对于M的增广路径
1 0
- 匈牙利算法与增广路径
- 匈牙利算法(DFS增广)
- HD 2063 增广路径求二分图最大匹配(匈牙利算法)
- hdu1054 匈牙利算法(增广路) (附匈牙利算法模板)
- 匈牙利算法改进 之 队列优化寻找极大增广路径集 —— Hopcroft-Karp算法 【记录】
- 二分图最大匹配(匈牙利算法-DFS增广模板)
- HDOJ 2063 过山车【匈牙利算法求二分图最大匹配 DFS增广 BFS增广】
- 最大流算法之-增广路径(path augmentation)and压入与重标记算法(push-relable)
- 关于最大流增广路径算法的正确性的证明
- 最大流问题:增广路径算法的比较之序
- 最大流问题:增广路径算法的比较
- hdu 3549 Flow Problem(网络流增广路径主要算法)
- 网络流之最大流的增广路径算法
- 最大流问题:增广路径算法的比较
- 最大流问题:增广路径算法的比较
- 【二分匹配】【匈牙利算法即由增广路求最大匹配模板】
- 最小点路径覆盖(匈牙利算法)
- 网络流增广路Edmonds-Karp算法 与 Dinic算法
- Mysql分页查询
- OPenGIS
- kernel workqueue 一点使用注意事项
- 用C语言的rand()和srand()产生伪随机数的方法总结
- Android从源码框架思路开始
- 匈牙利算法与增广路径
- Android基础service简介
- lua学习笔记
- JSP get提交中文乱码解决方法
- 【eoeAndroid社区索引】Android二维码知识汇总
- 细数微信QQ支付宝的四大难题?
- Q版人物
- 播放MP3音频和gif动画的一个小模块
- hdoj 2955 01背包变形+简单的概率论