二分匹配最大匹配的理解(附图解)

简介:

  定义
一个PXP的有向图中,路径覆盖就是在图中找一些路径,使之覆盖了图中的所有顶点,且任何一个顶点有且只有一条路径与之关联;(如果把这些路径中的每条路径从它的起始点走到它的终点,那么恰好可以经过图中的每个顶点一次且仅一次);如果不考虑图中存在回路,那么每条路径就是一个弱连通子集.
由上面可以得出:
1.一个单独的顶点是一条路径;
2.如果存在一路径p1,p2,......pk,其中p1 为起点,pk为终点,那么在覆盖图中,顶点p1,p2,......pk不再与其它的顶点之间存在有向边.
路径覆盖与二分图匹配的关系(必须是有向无环图):
最小路径覆盖=|P|-最大匹配数

也就是说匈牙利算法将一个二分匹配模型转换成了一个有向图的关系(u->v)存在了二维数组中!最后通过linker[u]数组的值,我们知道是选择了linker[u] -> u这一条有向边的匹配关系!也就是有多少个非负的linker[u]的个数,就有多少个匹配的关系!如果不存在回路,那么这些linker[u] -> u有向边关系所构成的弱联通的子集的个数就是最小路径覆盖的个数!










本文转自 小眼儿 博客园博客,原文链接:http://www.cnblogs.com/hujunzheng/p/3917855.html,如需转载请自行联系原作者
目录
相关文章
|
13天前
|
算法
【动态规划专栏】背包问题:分割等和子集
【动态规划专栏】背包问题:分割等和子集
24 0
|
1月前
|
算法 C++ 索引
【算法】——全排列算法讲解
【算法】——全排列算法讲解
|
1月前
|
算法
【数据结构与算法】常用算法 前缀和
【数据结构与算法】常用算法 前缀和
|
6月前
|
存储 算法
算法:图解前缀和问题
算法:图解前缀和问题
|
7月前
每日刷题|回溯法解决子集问题
每日刷题|回溯法解决子集问题
|
7月前
|
人工智能 算法 JavaScript
[数据结构与算法]基础算法(排序, 二分, 前缀, 差分)
快速排序:(分治的思想)✅ 确定分界点:q[l], q[(r+l)/2], q[r] (中间点可以随机选, 按照同一规则, 这里选(l+r)/2该点) 维护数组:维护分界点的左边都比分界点小,分界点的右边都比分界点大 按照维护关系, 递归处理左右两段 💡思想解释: 先整后细:先让大体总的符合条件,再部分部分解决
|
8月前
|
算法 前端开发 C++
拓扑排序详解(包含算法原理图解、算法实现过程详解、算法例题变式全面讲解等)
拓扑排序详解(包含算法原理图解、算法实现过程详解、算法例题变式全面讲解等)
160 0
|
10月前
|
算法
LeetCode算法小抄--花式遍历二叉树
LeetCode算法小抄--花式遍历二叉树
代码随想录刷题| 01背包理论基础 LeetCode 416. 分割等和子集
代码随想录刷题| 01背包理论基础 LeetCode 416. 分割等和子集
代码随想录刷题| 01背包理论基础 LeetCode 416. 分割等和子集
|
算法
【算法竞赛进阶指南】棋盘覆盖(二分图最大匹配)
【算法竞赛进阶指南】棋盘覆盖(二分图最大匹配)
110 0