二分图判定,二分图匹配(匈牙利算法),多重匹配,最小顶点覆盖,带权二分图匹配(KM算法)

本文介绍了二分图的判定方法,通过递归染色判断是否存在矛盾。接着讲解了最大匹配的匈牙利算法,并通过实例展示了匹配过程。讨论了最小点覆盖问题,指出最小点覆盖数等于最大匹配数。此外,还提到了二分图的多重匹配和带权二分图最大匹配的概念,提供了相关资源进行深入学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

 

二分图判定:

最大匹配

最小点覆盖

二分图多重匹配

带权二分图最大匹配


二分图判定:

两组顶点,每组顶点内没有相交。

如何判断二分图?

递归,染色。

随意将一顶点染色为1,将与其相连的染色为-1,再将与-1相连的点染为1,如此重复直到遍历完整个图

如果有矛盾(两个相连点染色相同)则不为二分图

代码

int dfs(int u,int sum)
{
    f[u]=sum;
    for(int i=0; i<e[u].size(); i++)  //vector存图(无向)
    {
        int v=e[u][i];
        if(f[v]==sum)  //颜色相同
            return 1;
        if(!f[v]&&dfs(v,-sum))  //深搜路径上有颜色相同
            return 1;
    }
    return 0;
}

二分图常用建图方法 

 

最大匹配

匈牙利算法  O(ne)

如图,这是一个二分图,左边集合为女生,右边为男生,图中连线为所有可能的找对象方案,如何选择使得有更多的女生可以找到男朋友(每个女/男生只能有一个男/女朋友)

首先从第一个女生开始,她只有一个心仪的对象,男2.那就相爱吧!

第二个女生, 心仪对象有两个,两个都没有女朋友,那就先选男1吧!

然后是女3,她心仪的男2已经有女1了呀!我们来调解下,看看女1可不可以换个男朋友,把男2让出来(女1:为啥要让我让!!)

哦吼,很不巧,女1死心塌地只要男2一个(调解失败)

那我们再来女3这边调解把,发现女3还喜欢男4,还说什么?上啊!

 女4,喜欢的男1也有对象,那我们来调解下:

先来看看男1的女朋友女2怎么想(女2:随便咯,我还有一个心仪对象呢),然后女2换了个男朋友——男3(渣女的既视感怎么回事。。)

女4也就可以选择男1当男朋友啦!

最后是女5,喜欢的男3有了对象(调解)

男3对象是女2,女2的另一个心仪对象男1也有了女朋友(再次调解)

男1 对象是女4,女4没有别的心仪对象(调解失败)

这下女2也没有别的对象可以换(调解失败)

调解女5,她的另一个心仪对象男5没有对象,匹配成功!

以上所有调解过程都是递归过程 

实现极其简单,(递归查询)这里只贴代码

//二位数组存图,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值