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

------------------------------------------------------------------------------------------------------

1. A flow network G = (V, ) is a directed graph in which each edge (u, v) ∈ E has a nonnegative capacity c(u, v) ≥ 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) ∉ E, then for convenience we define (u, v) = 0, and we disallow self-loops, hence, capacity can be viewed as a function c: V × V R.

5. A flow in G is a real-valued function : V×V → R that satisfies the following two properties:

#Capacity constraint: For all u, v ∈ V, we require  0 ≤  (u, v) ≤ c (u, v)

#Flow conservation: For all u ∈ V - {s, t}, we require

   ∑ (v, u) : v ∈ V =  ∑ (u, v) : v ∈ V  

6. The value | | of a flow f is defined as | f | =  ∑ (s, v) -  ∑ (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, ) of flow network G = (V, ) 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 (S, ) across the cut (S, ) is defined to be

  (S, ) = ∑uS ∑v f (u, v) - ∑uS ∑vT (v, u).

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

  (S, ) = ∑uS ∑vT (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, ) 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 ) cf  (u, v) by

  cf  (u, v) =

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

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

        0,        otherwise

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

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

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

(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 ' obeys the capacity constraint for each edge in and flow conservation at each vertex in V - {, t}.

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

f ↑ f ' ) (uv ) =  (uv) + f ' (uv) - 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 and f ' obey flow conservation, we have that for all ∈ V - {s, t},

vVf ↑ f ' ) (u, v) = ∑vV ( f (u, v) + f ' (u, v) - f ' (v, u))

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

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

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

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

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

Finally, = { 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( f ↑ f ' ) (s, v) -  ∑v( f ↑ f ' ) (v, s)

    = ∑vV1 ( f ↑ f ' ) (s, v) - ∑vV2 ( 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 ' |

  = ∑vV1 ( f (s, v) + f ' (s, v) - f ' (v, s)) - ∑vV2 ( f (v, s) + f ' (v, s) - f ' (s, v))

     = ∑vVf (sv) + ∑vV(sv) - ∑vV(v, s)

       - ∑vVf (vs) - ∑vV(vs) + ∑vV' (sv)

  = ∑vVf (sv) - ∑vVf (vs)

    + ∑vV(sv) + ∑vV' (sv) - ∑vV(vs) - ∑vV(vs)

  = ∑vVf (sv) - ∑vVf (vs) + ∑vV1∪V(sv) - ∑vV1∪V(vs) .

  = ∑vV f (sv) - ∑vV f (vs) + ∑v(sv) - ∑v(vs)

  = | f | + | f ' | .

Notions of Flow Networks and Flows的更多相关文章

  1. Openvswitch手册(9): Flow

    这一节我们将flow table flow table主要由ovs-ofctl命令操作 ovs-ofctl可以走和openflow controller一样的协议: ssl:ip[:port]: Th ...

  2. Spring Web Flow 入门demo(三)嵌套流程与业务结合 附源代码

    上篇博客我们说Spring web Flow与业务结合的方式主要有三种,以下我们主要介绍一下第三种的应用方式 3,运行到<action-state> 元素 SpringWeb Flow 中 ...

  3. 网络流 HDU 3549 Flow Problem

    网络流 HDU 3549 Flow Problem 题目:pid=3549">http://acm.hdu.edu.cn/showproblem.php?pid=3549 用增广路算法 ...

  4. flow

    Flow vs Stream https://wikidiff.com/flow/stream As nouns the difference between flow and stream is t ...

  5. [另开新坑] 算导v3 #26 最大流 翻译

    26 最大流 就像我们可以对一个路网构建一个有向图求最短路一样,我们也可以将一个有向图看成是一个"流量网络(flow network)",用它来回答关于流的问题. Just as ...

  6. 基于Open vSwitch的OpenFlow实践

    Open vSwitch(下面简称为 OVS)是由 Nicira Networks 主导的,运行在虚拟化平台(例如 KVM,Xen)上的虚拟交换机.在虚拟化平台上,OVS 可以为动态变化的端点提供 2 ...

  7. Open vSwitch FAQ (一)

    Basic Configuration Q: How do I configure a port as an access port? A: Add "tag=VLAN" to y ...

  8. SDN学习

    SDN & OpenFlow & Open vSwitch SDN SDN(软件定义网络)是一个概念.是一个思想.一个框架.是一种网络设计理念,它有三个特征 控制平面与转发平面分离 控 ...

  9. openvswith Frequently Asked Questions

    Open vSwitch <http://openvswitch.org> 参考地址:http://git.openvswitch.org/cgi-bin/gitweb.cgi?p=ope ...

随机推荐

  1. 【java基础】 如何导入外部jar包

    转:from http://www.zhihu.com/question/20311561 有两种常用的方法. 1. 以外部包(External Archives)的形式导入. 在默认位于 Eclip ...

  2. 05Spring_Bean属性的集合类型的注入

  3. 16Mybatis_动态sql_if判断

    mybatis的核心就是动态sql. 什么是动态sql:对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接.组装. 这篇文章讲解sql中的if语句.它可以对查询条件进行判断,如果输入参 ...

  4. [转]20位活跃在Github上的国内技术大牛

    FROM : http://blog.csdn.net/yaoxtao/article/details/38518933 20位活跃在Github上的国内技术大牛 本文列举了20位在Github上非常 ...

  5. C#中的bitmap类和图像像素值获取方法

    一.Bitmap类 Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义的图像的对象.该类的主要方法和属性如下: 1. GetP ...

  6. CSS 实现加载动画之三-钢琴按键

    今天做的这个动画实现也是非常简单,简单数几行代码就可以搞定.给这个动画取了个优雅的名字--钢琴按键,也实在是想不出什么更形象的名字了.废话不多说,直接上图. 1. 先看gif图 2. 代码实现思路 2 ...

  7. 大前端时代已经到来!传智播客2015之WEB前端视频教程(全套教程共15G)

    大前端时代已经到来!传智播客2015之WEB前端视频教程(全套教程共15G)大前端时代已经到来!如今,前端开发工程师的职责,不是只有切图.制作网页这么简单哦! G:\传智播客2015-WEB前端视频教 ...

  8. [CareerCup] 11.3 Search in Rotated Sorted Array 在旋转有序矩阵中搜索

    11.3 Given a sorted array of n integers that has been rotated an unknown number of times, write code ...

  9. IOS开发之——Masonry 只支持OC,暂不支持swift

    前言 1 MagicNumber -> autoresizingMask -> autolayout 以上是纯手写代码所经历的关于页面布局的三个时期 在iphone1-iphone3gs时 ...

  10. 物联网-手机远程控制家里的摄像头(2) - POP3和SMTP的C语言精简实现

    在上一篇博客里面,使用了Python来发送.接收mail,但是实际测试中出现了一些不稳定的 情况,而且Python和即将使用的opencv会不兼容,使用进程间通讯或者其他方法会让整个系统 显得复杂而且 ...