首页 > 其他 > 详细

【OI】二分图最大匹配

时间:2019-09-14 15:30:34      阅读:55      评论:0      收藏:0      [点我收藏+]

所谓二分图,是可以分为两个点集的图;

所谓二分图最大匹配,是两个点集之间,每两个不同点集的点连接,每个点只能连一个点,最大的连接数就是最大匹配。

 

如何解最大匹配,需要用到匈牙利算法。


 

匈牙利算法是一个递归的过程,它的特点,我觉得可以归为一个字:“让”。

技术分享图片

 

 

 

例如这张图,按照匈牙利算法的思路就是:

1.1与5匹配,5没有被标记,将5标记,记录1与5匹配

2.清空标记

3.2与5匹配,5没有被标记,将5标记,发现5已经与1匹配,在[此处]重新递归1:

  ①1与5匹配,发现5已经被标记,跳出

  ②1与7匹配,发现7没有被标记,将7标记,记录1与7匹配,返回成功

4.回到2与5匹配的[此处],发现返回成功,则直接记录2与5匹配

5.清空标记

6.3与5匹配,5没有被标记,将5标记,发现5已经与2匹配,在[此处]重新递归2:

  ①2与5匹配,发现5已经被标记,跳出

  ②2没有其他连接的边了,返回失败

7.回到3与5匹配的[此处],发现返回失败,继续查找与3连接的边

8.3与6匹配,6没有被标记,将6标记,记录3与6匹配

9.清空标记

9.4与7匹配,7没有被标记,将7标记,发现7已经与1匹配,在[此处]重新递归1:

  ①1与5匹配,5没有被标记,将5标记,发现5已经与2匹配,在[此处A]重新递归2:

    ①2与5匹配,发现5已经被标记,跳出

    ②2没有连接的边了,返回失败

  ②回到1与5匹配的[此处A],发现返回失败,继续查找1连接的边

  ③1与7匹配,发现7已经被标记,跳出

  ④1没有可以连接的边了,返回失败

10.回到4与7匹配的[此处],发现返回失败,继续查找与4连接的边

11.4与8匹配,8没有被标记,将8标记,记录4与8匹配

12.清空标记

13.左边的点集枚举完毕,从记录中得到:1与7匹配,2与5匹配,3与6匹配,4与8匹配

 

这就是匈牙利算法(这就是人脑编译器吗)

 

【OI】二分图最大匹配

原文:https://www.cnblogs.com/dudujerry/p/11519190.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!