网络流基础
感谢某个同学问我网络流问题的同学,让我在有生之年整理了一把网络流。 大部分资料来源于:洛谷暑期营的课件 一,一些关于网络流的概念 网络流图:一张有向连通图,有且只有一个点的入度为零,这个点称为源点,有且只有一个点的出度为零 这个点称为汇点,每个边有一个非负权值c称为这条边的容量。 容许流:在网络流图中,对于每条边 e = (i, j) 给定实数 fe ,如果满足 fe ≤ ce ; 对于任意 x ̸= S,T , ∑ e=(x,i) fe = ∑ e=(i,x) fe ;(流量平衡) ∑ e=(S,i) fe = ∑ e=(i,T) fe = W , 则这一组 f 称为 该网络的一个容许流,W 称为它的流量。 最大流:求一个容许流使得它的 W 最大,用通俗易懂的话说,最大流就是给源点赋一个数,你要让这个值能够通过 这张网络流图的路径流到汇点,你想让这个值尽量的大。 二,最大流算法 一类解决网络流求最大流问题的基本思想——Ford-Fulkerson 标号算法 该算法的核心思想为不断寻找增广路。 何为增广(源)路,就是找到一条从源点到汇点的路径,使得这条路径的流量不为零,就找到了一条增源路。 算法过程: 记录 ve = ce − fe ,为一条边的剩余可用容量。 对于每一条边 e = (i, j) ,增加一条 反向弧 e ′ = (j, i) ,ve’=0。 首先给 S 标号 (−,