Skip to content

网络流基础 学习笔记

搬运自 OI WIKI

概述

网络(network)是指一个特殊的有向图 G=(V,E),其与一般有向图的不同之处在于有容量和源汇点。

  • E 中的每条边 (u,v) 都有一个被称为容量(capacity)的权值,记作 c(u,v)。当 (u,v)E 时,可以假定 c(u,v)=0

  • V 中有两个特殊的点:源点(source)s 和汇点(sink)tst

对于网络 G=(V,E),流(flow)是一个从边集 E 到整数集或实数集的函数,其满足以下性质。

  1. 容量限制:对于每条边,流经该边的流量不得超过该边的容量,即 0f(u,v)c(u,v)
  2. 流守恒性:除源汇点外,任意结点 u 的净流量为 0。其中,我们定义 u 的净流量为 f(u)=xVf(u,x)xVf(x,u)

对于网络 G=(V,E) 和其上的流 f,我们定义 f 的流量 |f|s 的净流量 f(s)。作为流守恒性的推论,这也等于 t 的净流量的相反数 f(t)

对于网络 G=(V,E),如果 {S,T}V 的划分(即 ST=VST=且满足 sS,tT,则我们称 {S,T}G 的一个 s-t 割(cut我们定义 s-t{S,T} 的容量为 ||S,T||=uSvTc(u,v)

常见问题

常见的网络流问题包括但不限于以下类型问题。

  • 最大流问题:对于网络 G=(V,E),给每条边指定流量,得到合适的流 f,使得 f 的流量尽可能大。此时我们称 fG 的最大流。
  • 最小割问题:对于网络 G=(V,E),找到合适的 s-t{S,T},使得 {S,T} 的容量尽可能小。此时我们称 {S,T}G 的最小割。
  • 最小费用最大流问题:在网络 G=(V,E) 上,对每条边给定一个权值 w(u,v),称为费用(cost含义是单位流量通过 (u,v) 所花费的代价。对于 G 所有可能的最大流,我们称其中总费用最小的一者为最小费用最大流。

例题:网络流 24 题

网络流 24 题是中文互联网上广泛流传的一个题单(LibreOJ/ 洛谷至少在 2010 年前后就已经存在。该题单引入了一些经典的将其他问题建模为网络流问题的技巧。由于时代的局限性,这些问题未必是最具代表性的网络流问题,但仍值得一阅。