本页面主要介绍网络流相关的基本知识.

概述

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

  • 中的每条边 都有一个被称为容量(capacity)的权值,记作 .当 时,可以假定

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

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

  1. 容量限制:对于每条边,流经该边的流量不得超过该边的容量,即
  2. 流守恒性:除源汇点外,任意结点 的净流量为 .其中,我们定义 的净流量为

对于网络 和其上的流 ,我们定义 的流量 的净流量 .作为流守恒性的推论,这也等于 的净流量的相反数

对于网络 ,如果 的划分(即 ),且满足 ,则我们称 的一个 - 割(cut).我们定义 - 的容量为

常见问题

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

  • 最大流问题:对于网络 ,给每条边指定流量,得到合适的流 ,使得 的流量尽可能大.此时我们称 的最大流.
  • 最小割问题:对于网络 ,找到合适的 -,使得 的总容量尽可能小.此时我们称 的总容量是 的最小割.
  • 最小费用最大流问题:在网络 上,对每条边给定一个权值 ,称为费用(cost),含义是单位流量通过 所花费的代价.对于 所有可能的最大流,我们称其中总费用最小的一者为最小费用最大流.

我们将在稍后的章节中对它们进行详细介绍.

例题:网络流 24 题

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

多平台练习

| 洛谷 | 本题单 | 竞赛基础 |
| POJ (北大) | PKU JudgeOnline | 经典题目,适合巩固 |
| HDU (杭电) | HDU OJ | 暑期多校训练 |
| Codeforces | Codeforces | 国际竞赛,适合提升 |