这篇随笔是对算法导论(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 | | 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, we compute the value of 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( 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 ' | .

转载于:https://www.cnblogs.com/Patt/p/4866605.html

Notions of Flow Networks and Flows相关推荐

  1. 人体姿态跟踪--Pose Flow: Efficient Online Pose Tracking

    Pose Flow: Efficient Online Pose Tracking https://github.com/MVIG-SJTU/AlphaPose 本文主要是关于人体姿态跟踪方面的内容. ...

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

    转载地址 ; http://blog.csdn.net/hejingyuan6/article/details/46723021 上篇博客我们说spring web Flow与业务结合的方式主要有三种 ...

  3. 《Long-term Recurrent Convolutional Networks for Visual Recognition and Description》论文翻译

    <Long-term Recurrent Convolutional Networks for Visual Recognition and Description>论文翻译 原文链接: ...

  4. 【HT·3D·flow 】流动特效

    [HT·3D]编辑器中展示流动 1.在全局反序列化中写: // 流动动画 uv偏移 var flow = dm.getDataByTag('flows') flow.eachChild(functio ...

  5. 70页论文,图灵奖得主Yoshua Bengio一作:“生成流网络”拓展深度学习领域

    来源:机器之心 本文约2800字,建议阅读10分钟 GFlowNet会成为新的深度学习技术吗? 近日,一篇名为<GFlowNet Foundations>的论文引发了人们的关注,这是一篇图 ...

  6. 70页论文,图灵奖得主Yoshua Bengio一作:「生成流网络」拓展深度学习领域

    来源:机器学习研究组订阅 GFlowNet 会成为新的深度学习技术吗? 近日,一篇名为<GFlowNet Foundations>的论文引发了人们的关注,这是一篇图灵奖得主 Yoshua ...

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

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

  8. 【ECCV2020】完整论文集part2

    ECCV2020将于2020年8月23-28日在线上举行,今年共接受了1361篇论文,本文是接收论列表的第二部分,第一部见链接 Paper ID Paper Title Category 2515 T ...

  9. Open vSwitch 概述

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

最新文章

  1. Spring Boot 配置文件 yml与properties
  2. Linux CentOS 6.x报错解决:错误:Cannot retrieve metalink for repository: epel. Please verify its path and tr
  3. IntellIJ IDEA 配置 Maven 以及 修改 默认 Repository
  4. dibian+9+oracle+java_debian – 安装了Oracle Java,但在安装软件时,我得到了`你的Java版本不受支持....
  5. 开源 免费 java CMS - FreeCMS1.9 会员组管理
  6. 使用网络TCP搭建一个简单文件下载器
  7. JumpServer 开源堡垒机 快速部署
  8. C语言 · 图形输出
  9. atitit.农历的公式与原理以及农历日期运算
  10. 最全总结 | 聊聊 Python 数据处理全家桶(Sqlite篇)
  11. Google 2018 更新内容
  12. MD5 文件校验之 java 实现
  13. 联想计算机的功能键,联想fn键怎么用 联想fn组合按键功能介绍【图文】
  14. Python操作word插入对象
  15. Java 根据贷款年限对应的不同利率计算月供
  16. [poj3130][半平面交]How I Mathematician Wonder What You Are!
  17. 三维模型进行视角相机变换
  18. AI行业精选日报_人工智能(1105)
  19. oracle生僻字解决方案
  20. draw.io在线画图

热门文章

  1. hive在hue上使用udf时报错
  2. 高中数学导数极值点偏移专题(二)
  3. Nest.js中的设计模式——装饰器
  4. nestjs 快捷创建相关命令
  5. bzoj4569[Scoi2016]萌萌哒
  6. python canny检测_python Canny边缘检测算法的实现
  7. 5.荔枝派 zero(全志V3S)-buildroot配置播放视频
  8. 国家高新技术企业申报办法及认定要求重点介绍,包括常见解答
  9. mysql日志管理 、备份与恢复
  10. iOS调试奇巧淫技(一)