您的位置:首页 > 其它

Notions of Flow Networks and Flows

2015-10-10 13:56 357 查看

这篇随笔是对算法导论(Introduction to Algorithms, 3rd. Ed.)第26章 Maximum Flow的摘录。

 

1. A flow network $G = (V, E )$ is a directed graph in which each edge $(u, v) \in E$ has a nonnegative capacity $c(u,v) \ge 0$. 

2. We further require that if $E$ contains an edge $(u, v)$ then there is no edge $(v, u)$ in the reverse direction.

3. We distinguish two vertices in a flow network: a source s and a sink t.

4. If $(u, v) \notin E$, then for convenience we define $c(u,v)=0$, and we disallow self-loops, hence, capacity can be viewed as a function $c\colon V\times V\to R$.

5. A flow in G is a real-valued function $f \colon V\times V\to R$ that satisfies the following two properties:

  Capacity constraint: For all $u, v \in V$, we require  $0\le f(u,v)\le c(u,v)$

  Flow conservation: For all $u\in V-\{s,t\}$, we require 

\[ \sum_{v\in V} f(v,u) = \sum_{v\in V}f(u,v)\]

6. The value | f | of a flow f is defined as | f | =  ∑ f (s, v) -  ∑ f (v, s).

7. In the maximum-flow problem, we are given a flow network G with source s and sink t, and we wish to find a flow of maximum value.

8. A cut (S, T ) of flow network G = (V, E ) is a partion of V into S and T = V - S such that s ∈ S and t ∈ T.

9. If  f  is a flow, then the net flow f (S, T ) across the cut (S, T ) is defined to be

  f (S, T ) = ∑u∈S ∑v∈T  f (u, v) - ∑u∈S ∑v∈T f (v, u).

10. The capacity of the cut (S, T)  is defined to be 

  c (S, T ) = ∑u∈S v∈T c (u, v).

11. A minimum cut of  a network is a cut whose capacity is minimum over all cuts of the network.

12. Given a flow network G = (V, E ) with source s and sink t. Let  f  be a flow in G, and consider a pair of vertices u, v ∈ V. We difine the residual capacity (induced by f ) cf  (u, v) by

  cf  (u, v) =

        c (u, v) - f (u, v),  if (u, v) ∈ E

        f (u, v),        if (v, u) ∈ E

        0,        otherwise

13. Given a flow network G = (V, E ) and a flow f, the residual network of G induced by f is Gf  = (V, Ef ) where

  Ef  = {(u, v) ∈ V × V : cf  ( u, v) > 0}

14.  If  f  is a flow in G and f '  is a flow in  the corresponding residual network Gf, we define f ↑ f ', the augmentation of flow f  by f ', to be a function from V × V to R, defined by

(f ↑ f ' ) (u, v) =

        f (u, v) + f ' (u, v) - f ' (v, u)  if (u, v) ∈ E ,

        0                otherwise .

15.(Lemma 26.1, pp. 717)

Let G = (V, E) be a flow network with source s and sink t, and let  f  be a flow in G . Let Gf be the residual network of G induced by f , and let  f ' be a flow in Gf . Then, the function  f ↑ f ' defined above is a flow in G with value | f ↑ f ' | = | f | + | f | + | f ' |.

Proof   We first verify that f ↑ f ' obeys the capacity constraint for each edge in E  and flow conservation at each vertex in V - {s , t}.

For the capacity constraint, first observe that if (u, v) ∈ E, then cf (v, u) = f (u, v). Therefore, we have f ' (v, u) ≤ cf (v, u) = f (u, v), and hence

( f ↑ f ' ) (u, v ) =  f (u, v) + f ' (u, v) - f ' (v, u) 

        ≥  f (u, v) + f ' (u, v) - f (u, v)

                       =  f ' (u, v)

       ≥  0 .

In addition,

(f ↑ f ') (u, v) 

    = f (u, v) + f ' (u, v) - f ' (v, u)

    ≤ f (u, v) + f ' (u, v)

    ≤ f (u, v) + cf (u, v)

    = f (u, v) + c (u, v) - f (u, v)

    = c (u, v)

For flow conservation, because both f  and f ' obey flow conservation, we have that for all u ∈ V - {s, t},

∑v∈V ( f ↑ f ' ) (u, v) = ∑v∈V ( f (u, v) + f ' (u, v) - f ' (v, u))

          = ∑v∈V f (u, v) + ∑v∈V  f ' (u, v) - ∑v∈V f ' (v, u)

          = ∑v∈V f (v, u) + ∑v∈V f ' (v, u) - ∑v∈V f ' (u, v)

          = ∑v∈V ( f (v, u) + f ' (v, u) - f ' (u, v) )

          = ∑v∈V ( f ↑ f ' ) (v, u) ,

where the third line follows from the second line by flow conservation.

Finally, we compute the value of f ↑ f ' (recall how we define the value of a flow). Recall that we disallow antiparallel edges in G (but not in Gf ), and hence for each edge (s, v) ∈ V, we know that there can be an edge (s, v) or (v, s), but never both. We define V1 = { v : (s, v) ∈ E} to be the set of vertices with edges from s, and V2 = {v : (v, s) ∈ E} to be the set of vertices to s. We have V1  ∪ V2 ⊆ V and, because we disallow antiparallel edges, V1 ∩ V2 = ∅. We now compute

| f ↑ f ' | = ∑v∈V ( f ↑ f ' ) (s, v) -  ∑v∈V ( f ↑ f ' ) (v, s)

    = ∑v∈V1 ( f ↑ f ' ) (s, v) - ∑v∈V2 ( f ↑ f ' ) (v, s) ,

where the second line follows because ( f ↑ f ' ) (w, x) is 0 if (w, x) ∉ E. We now apply the definition of f ↑ f ' to the equation above, and then reorder and group terms to abtain

| f ↑ f ' | 

  = ∑v∈V1 ( f (s, v) + f ' (s, v) - f ' (v, s)) - ∑v∈V2 ( f (v, s) + f ' (v, s) - f ' (s, v))

     = ∑v∈V1 f (s, v) + ∑v∈V1 f ' (s, v) - ∑v∈V1 f ' (v, s)

       - ∑v∈V2 f (v, s) - ∑v∈V2 f ' (v, s) + ∑v∈V2 f ' (s, v)

  = ∑v∈V1 f (s, v) - ∑v∈V2 f (v, s) 

    + ∑v∈V1 f ' (s, v) + ∑v∈V2 f ' (s, v) - ∑v∈V1 f ' (v, s) - ∑v∈V2 f ' (v, s)

  = ∑v∈V1 f (s, v) - ∑v∈V2 f (v, s) + ∑v∈V1∪V2 f ' (s, v) - ∑v∈V1∪V2 f ' (v, s) .

  = ∑v∈V f (s, v) - ∑v∈V f (v, s) + ∑v∈V f ' (s, v) - ∑v∈V f ' (v, s)

  = | f | + | f ' | .

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: