Loading

网络流定义

假设 \(G=(V,E)\) 是一个有限的有向图,它的每条边 \((u,v)∈E\) 都有一个非负值实数的容量 \(c(u, v)\)。如果 \((u, v) \not \in E\),我们假设 \(c(u, v) = 0\)。我们区别两个顶点:一个源点 \(s\) 和一个汇点 \(t\)。一道网络流是一个对于所有结点 \(u\)\(v\) 都有以下特性的实数函数 \(f:V \times V \rightarrow \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 V\setminus{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\)算法中。
有时需要对有多于一个源点的网络,于是就引入了图的超源点。这包含了一个与无限容量的边连接的每个源点,以作为一个整体源点。汇点也有类似的构造称作超汇点。

posted @ 2021-06-13 19:38  ナンカエデ  阅读(117)  评论(0编辑  收藏  举报