转:二分图最大匹配Hopcroft_Karp算法

 

二分图最大匹配除了匈牙利算法还有一个Hopcroft-Karp算法,匈牙利算法的复杂的为O(ne),而Hopcroft-Karp算法的

复杂度为O(en^0.5)。

     该算法的精髓在于同时找多条增广路进行反转。我们先用BFS找出可能的增广路,这里用到BFS层次搜索的概念,

记录当前结点在第几层,用于后面DFS沿增广路反转时用,然后再用DFS沿每条增广路反转。这样不停地找,直至无法找

到增广路为止。

     wiki上的说明: http://en.wikipedia.org/wiki/Hopcroft–Karp_algorithm

     推荐两道题测试该算法:

     hdu 2389

     http://acm.hdu.edu.cn/showproblem.php?pid=2389

     这道题空间,时间都卡的比较紧,用前向星的存储方法不停TLE,最后用

vector存邻接表才过的...时间为: 343MS,还算满意~~

      SPOJ 4206

      https://www.spoj.pl/problems/MATCHING/

      裸的二分图匹配,就是用来测时间的,跑了1.43s,也还行~~

附Hopcroft-Karp算法模板:

二分图最大匹配: Hopcroft_Karp算法,复杂度: O(n^2.5).

用BFS找多条增广路,用distx, disty来记录下一个点,用DFS来遍历这些增广路.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值