最大流算法之Ford-Fulkerson算法与Edmonds–Karp算法

本文介绍了最大流问题的基本概念,重点解析了Ford-Fulkerson算法及其变体Edmonds-Karp算法的工作原理,包括残余网络、增广路等关键概念,并探讨了两种算法的时间复杂度。
摘要由CSDN通过智能技术生成

引子

曾经很多次看过最大流的模板,基础概念什么的也看了很多遍。也曾经用过强者同学的板子,然而却一直不会网络流。虽然曾经尝试过写,然而即使最简单的一种算法也没有写成功过,然后对着强者大神的代码一点一点的照猫画虎,A了一题。然而这并没有什么用,实际上我还是不会呀。过一阵子就写不出来了,所以那个时候的A应该就是对照着换了换变量吧。持续性萎靡不振,间歇性踌躇满志的我觉得是时候不看资料尤其是不看他人代码完全的自己写一道模板题了。

题目

hihocoder 1369 http://hihocoder.com/problemset/problem/1369
hdu 3549 http://acm.hdu.edu.cn/showproblem.php?pid=3549
两道数据范围极小的模板练习题

最大流问题

不想过多的重复网上已有的基础概念。只想叙述一下我的理解。
把边都想象成仅可以单向流动的水管(虽然这有点奇怪,或者换成单向车道没那么奇怪)。问题就是求从源点到汇点最多流多少水。
流量网络就是每条边流多少水构成的图。
显然通过每条边的限制不能超过该边的容量限制。
残余网络就是每条边还可以流多少水。
最为重要的是反向边的理解了。
当我选择对于在边 (u,v) ( u , v ) 增加其一个流量 f f ,那么u到v的新的残余容量就是这个操作之前残余流量减去 f ,即

c(u,v)=c(u,v)f c ′ ( u , v ) = c ( u , v ) − f

同时增加对v到u的残余流量(如果一开始v到u没有边就是容量为0)增加f.
这个容量的增加如何理解呢?
如果选择给v到u一个 f f ′ 的流量,相当于原本变化前的图中u到v的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值