【图论】匈牙利算法(二分图最大匹配)

本文介绍了二分图的概念及其在图论中的重要性,重点讲解了如何利用匈牙利算法求解二分图的最大匹配问题。在最大匹配问题中,寻找边数最多的子集,确保任意两条边不依附于同一顶点。文章还讨论了match数组的使用以及算法中判断增广路的关键步骤,并指出匈牙利算法相较于网络流算法的效率差异。
摘要由CSDN通过智能技术生成

 二分图

又称作二部图,是图论中的一种特殊模型

设G=(V,E)是一个无向图,

如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),

则称图G为一个二分图。

最大匹配

给定一个二分图G,在G的一个子图M中,M的边集中的任意两条边都不依附于同一个顶点,则称M是一个匹配.

选择这样的边数最大的子集称为图的最大匹配问题(maximal matching problem)

 注意几个问题:

1.match数组存的是每一个女生对应的男友是谁

2.每次更新的时候,判断一下和这个男生想要配对的女友配对的男友能不能换一个女生(一直递归),如果最后一个男生可以更换成一个没有被配对的女生,就找到了一条增广路

3.如果当前想要配对的女生没有被配对的话,就跟这个男生配对

4.最大匹配是在二分图上加了一个限制(任意两条边不依附于同一个顶点)

5.当然了,匈牙利算法并没有网络流算法来的快

#include<iostream>
#include<cstdio>
#include<cstring>
using n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值