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

简介:

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

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

目录
相关文章
|
1月前
|
算法 C++ 索引
【算法】——全排列算法讲解
【算法】——全排列算法讲解
|
1月前
|
算法
【数据结构与算法】常用算法 前缀和
【数据结构与算法】常用算法 前缀和
|
9月前
|
搜索推荐
图解:快速排序算法之双边循环法
之前我们学习了冒泡排序,有没有比冒泡排序更快的排序算法呢?当然有,例如快速排序,归并排序,堆排序。接下来即将介绍的快速排序就是由冒泡排序演变而来的。
114 0
图解:快速排序算法之双边循环法
|
6月前
|
存储 算法
算法:图解前缀和问题
算法:图解前缀和问题
|
7月前
|
人工智能 算法 JavaScript
[数据结构与算法]基础算法(排序, 二分, 前缀, 差分)
快速排序:(分治的思想)✅ 确定分界点:q[l], q[(r+l)/2], q[r] (中间点可以随机选, 按照同一规则, 这里选(l+r)/2该点) 维护数组:维护分界点的左边都比分界点小,分界点的右边都比分界点大 按照维护关系, 递归处理左右两段 💡思想解释: 先整后细:先让大体总的符合条件,再部分部分解决
|
10月前
|
机器学习/深度学习 算法 Python
Python实现回溯算法求解括号生成
Python实现回溯算法求解括号生成
40 0
|
10月前
|
存储 人工智能 算法
LeetCode算法小抄 -- 经典图论算法 之 二分图
LeetCode算法小抄 -- 经典图论算法 之 二分图
|
11月前
|
人工智能 移动开发 算法
基础算法-前缀和
假设现在存在一个数组 a[1]、a[2] …… a[n],这里需要注意,前缀和下标必须是从 1 开始,因此要注意数组下标。而 s[i] = a[1] + a[2] + …… + a[n],在这里会产生如下问题
|
算法 Java Linux
【基础算法】二分例题(我在哪?)
【基础算法】二分例题(我在哪?)
92 0
【基础算法】二分例题(我在哪?)
|
算法
经典算法之二分法
经典算法之二分法
102 0
  经典算法之二分法