网络流定义

假设 (G=(V,E)) 是一个有限的有向图,它的每条边 ((u,v)∈E) 都有一个非负值实数的容量 (c(u, v))。如果 ((u, v) ot in E),我们假设 (c(u, v) = 0)。我们区别两个顶点:一个源点 (s) 和一个汇点 (t)。一道网络流是一个对于所有结点 (u)(v) 都有以下特性的实数函数 (f:V imes V ightarrow mathbb{R})容量限制(CapacityConstraints)(f(u, v) leq c(u, v))一条边的流不能超过它的容量。斜对称(SkewSymmetry)(f(u, v) = - f(v, u))(u)(v) 的净流必须是由 (v)(u) 的净流的相反(参考例子)。
流守恒(Flow Conservation): 除非 (u=s)(u=t),否则 (∑w∈Vf(u,w)=0) 一结点的净流是零,除了“制造”流的源点和“消耗”流的汇点。
即流守恒意味着:(∑(u,v)∈Ef(u,v)=∑(v,z)∈Ef(v,z)) ,对每个顶点 (v in Vsetminus{s,t}) 注意 (f(u,v)) 是由 (u)(v) 的净流。如果该图代表一个实质的网络,由 (u)(v) 有4单位的实际流及由 (v)(u)(3)单位的实际流,那么 (f(u, v) = 1)(f(v,u)=−1)
基本上,我们可以说,物理网络的网络流是从 (s = sum_{(s,v)in E} f(s,v)) 出发的流边的剩余容量(residualcapacity)(c_f(u, v) = c(u, v) - f(u, v)) 。这定义了以(G_f(V, E_f))表示的剩余网络(residual network),它显示可用的容量的多少。留意就算在原网络中由 (u)(v) 没有边,在剩余网络仍可能有由 (u)(v) 的边。因为相反方向的流抵消,减少由(v)(u)的流等于增加由 (u)(v) 的流。增广路(augmentingpath)是一条路径 ((u_1, u_2, dots, u_k)),而 (u1=s,uk=t)(cf(ui,ui+1)>0),这表示沿这条路径发送更多流是可能的。当且仅当剩余网络(Gf)没有增广路时处于最大流。
因此如下使用图 (G) 创建 (G_f :G_f = V) 的顶点定义如下的(G_f = E_f) 的边对每条边 ((x,y) in E)(f(x,y) < c(x,y)),创建容量为 (c_f = c(x,y) - f(x,y)) 的前向边 ((x,y)∈Ef)
(f(x,y) > 0),创建容量为 (c_f = f(x,y))的后向边 ((y,x)∈Ef)
这个概念用在计算流量网的最大流的(Ford–Fulkerson)算法中。
有时需要对有多于一个源点的网络,于是就引入了图的超源点。这包含了一个与无限容量的边连接的每个源点,以作为一个整体源点。汇点也有类似的构造称作超汇点。

原文地址:https://www.cnblogs.com/nanfeng-blog/p/14880971.html