网络流——最大流与最小割

本文详细介绍了网络流问题中的最大流和最小割概念,并通过USACO题库中的‘Drainage Ditches’问题作为示例。讲解了最短路径增值算法(MPLA)、Dinic算法以及SAP算法,包括它们的主要步骤、复杂度分析和应用。文章还探讨了最大流与最小割的关系,并给出了实际问题的求解示例。
摘要由CSDN通过智能技术生成

网络流——最大流与最小割

最大流

先看一道题(选自usaco题库4.2.1):

【USACO题库】4.2.1 Drainage Ditches草地排水

时间限制: 1000 ms 空间限制: 128000 KB 具体限制

题目描述
在农夫约翰的农场上,每逢下雨,贝茜最喜欢的三叶草地就积聚了一潭水。这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间。因此,农夫约翰修建了一套排水系统来使贝茜的草地免除被大水淹没的烦恼(不用担心,雨水会流向附近的一条小溪)。作为一名一流的技师,农夫约翰已经在每条排水沟的一端安上了控制器,这样他可以控制流入排水沟的水流量。
农夫约翰知道每一条排水沟每分钟可以流过的水量,和排水系统的准确布局(起点为水潭而终点为小溪的一张网)。需要注意的是,有些时候从一处到另一处不只有一条排水沟。
根据这些信息,计算从水潭排水到小溪的最大流量。对于给出的每条排水沟,雨水只能沿着一个方向流动,注意可能会出现雨水环形流动的情形。

输入
第1行: 两个用空格分开的整数N (0 <= N <= 500000) 和 M (2 <= M <= 1000)。N是农夫约翰已经挖好的排水沟的数量,M是排水沟交叉点的数量。交点1是水潭,交点M是小溪。
第二行到第N+1行: 每行有三个整数,Si, Ei, 和 Ci。Si 和 Ei (1 <= Si, Ei <= M) 指明排水沟两端的交点,雨水从Si 流向Ei。Ci (0 <= Ci <= 10,000,000)是这条排水沟的最大容量。

输出
输出一个整数,即排水的最大流量。

样例输入

5 4
1 2 40
1 4 20
2 4 20
2 3 30
3 4 10

样例输出

50

数据范围限制
N (0 <= N <= 500000)
M (2 <= M <= 1000)

这道题看了看,发现用之前所学的算法都没有什么思路,那么,我们现在就引进一种新的算法:网络流。而网络流又分为很多种:最大流,最小割,费用流等,这一道题用的是最大流。

何为最大流?
抽象地讲是给你一个网络,有一个源点和汇点,现在要从源点放水,水从一条边流到另一个点,但最多只能流一个值的水,下一个点又这样流向另一个点,问汇点最多会流入多少水?

知道了这些,我们就了解一些概念:

概念

    • 剩余图
    • 给定一个流量网络 G1=(E1,V1) 源点s汇点t、容量函数为c(u,v)以及其上的流量函数f(u,v)。那么定义剩余图 G2=(E2,V2) :剩余图中的点集与流量网络中的点集相同,即 V1=V2 ,对于流量网络中的任一条边 (u,v)E1 f(u,v)<c(u,v) (u,v)E2 这条边在剩余图中的权值为 g(u,v)=c(u,v)f(u,v) ,同时,若 f(u,v)>0 (v,u)E2 g(v,u)=f(u,v)
    • 我们可以发现,流量网络中的每条边在剩余图中都化作一条或二条边。剩余图中的每条边都表示在原流量网络中能沿其方向增广。剩余图的权值函数 g(u,v) 表示在流量网络中能够沿着u到v 的方向增广大小为 g(u,v) 的流量。所以在剩余图中,从源点到汇点的任意一条简单路径都对应着一条增广路,路径上每条边的权值的最小值即为能够一次增广的最大流量。
    • 顶点的层次
    • 在剩余图中,我们把从源点到点u的最短路径长度称作点u的层次,记为 level(u) 。源点的层次为0。在下面这张剩余图中:
    • 层次
    • 每个点旁边的数字即表示该点在图中的层次。
    • 层次图的概念
    • 我们这样定义层次图 G3=(E3,V
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值