文章目录

  • 基本概念
  • 定理:流小于等于割容量
  • Max-Flow Min-Cut Theorem

基本概念

  网络流Network Flow,是用来研究现实生活中的水、电、油、气、交通、互联网等网络结构流量的数学分支。用图论抽象网络流模型,就是流网络。
  流网络Flow Network,也叫传输网络Transport Network,是一种连通的无负权重的有向简单图。权重是用来代表容量的。
  容量capacity,用cijc_{ij}cij​表示节点iii到节点jjj的容量。
  起点source vertex,终点sink vertex
  流量Flow,下面这张图表示了流量与容量的区别(这个图被很多地方“复用”,比如普林斯顿大学、印度理工学院等,我这里用的是普林斯顿大学的图):

  饱和边Saturated edge,流量等于容量的边,被称为饱和边。上图中3→63\to63→6就是一条饱和边。
  流模式Flow Pattern,所有边流量都确定后,放入一个集合中,这个集合就叫流模式。
  最大流模式Maximal Flow Pattern,起点的流出和终点的流入是相等的,记为w,使得w最大的流模式,叫做最大流模式。
  cut,割就是把流网络中的节点拆分为非空的两个子集,一个包含起点s,一个包含终点t,割的符号为(P,P‾)(P,\overline{P})(P,P)。如下图就是一种割方案(图片来自普林斯顿大学):

  割的容量Capacity of a Cut,符号为c(P,P‾)c(P,\overline{P})c(P,P),是割的边界处的容量和,反向的需要按负数计算。

定理:流小于等于割容量

  这个定理里的流是指由起点s到终点t的流,也就是起点出发的所有边的流总和,或到终点的所有边的流总和,记为www。定理是说在任何割里,起点到终点的流都要小于割容量。用数学语言表示就是w≤c(P,P‾)w\le c(P,\overline{P})w≤c(P,P)。这个的下面我给出证明。
  首先对于中间节点j,流入等于流出:
∑i≠jfji−∑i≠jfij=0\sum_{i\neq j}f_{ji}-\sum_{i\neq j}f_{ij}=0 i​=j∑​fji​−i​=j∑​fij​=0
  对于起点s,流出减去流入等于净流量w。
∑i≠sfsi−∑i≠sfis=w\sum_{i\neq s}f_{si}-\sum_{i\neq s}f_{is}=w i​=s∑​fsi​−i​=s∑​fis​=w
  P里的点就两种,s和中间节点,把上面两个公式全部加起来,就是若干个0和一个w。所以可以得到这个公式:
∑k∈P,i∈Gfki−∑k∈P,i∈Gfik=w\sum_{k\in P, i \in G}f_{ki}-\sum_{k\in P, i \in G}f_{ik}=w k∈P,i∈G∑​fki​−k∈P,i∈G∑​fik​=w
  再把上式中的i区分为来自PPP和P‾\overline{P}P,就有了:
∑k∈P,i∈Pfki+∑k∈P,i∈P‾fki−∑k∈P,i∈Pfik−∑k∈P,i∈P‾fik=w\sum_{k\in P, i \in P}f_{ki}+\sum_{k\in P, i \in \overline{P}}f_{ki}-\sum_{k\in P, i \in P}f_{ik}-\sum_{k\in P, i \in \overline{P}}f_{ik}=w\\ k∈P,i∈P∑​fki​+k∈P,i∈P∑​fki​−k∈P,i∈P∑​fik​−k∈P,i∈P∑​fik​=w
  把整个P视为一个节点,其内部的流量相加肯定是0的,只往外流出w,所以其内部流量总和为0,所以有:
∑k∈P,i∈Pfki−∑k∈P,i∈Pfik=0\sum_{k\in P, i \in P}f_{ki}-\sum_{k\in P, i \in P}f_{ik}=0 k∈P,i∈P∑​fki​−k∈P,i∈P∑​fik​=0
  两个式子抵消下,有:
∑k∈P,i∈P‾fki−∑k∈P,i∈P‾fik=w\sum_{k\in P, i \in \overline{P}}f_{ki}-\sum_{k\in P, i \in \overline{P}}f_{ik}=w k∈P,i∈P∑​fki​−k∈P,i∈P∑​fik​=w
  这个公式就是说对于割,PPP流入P‾\overline{P}P减去P‾\overline{P}P流入PPP等于净流量w。这么复杂的数学过程等于证明了一句废话。P‾\overline{P}P流入PPP的流量,也就是∑k∈P,i∈P‾fik\sum_{k\in P, i \in \overline{P}}f_{ik}∑k∈P,i∈P​fik​是个非负数,所以有:
w≤∑k∈P,i∈P‾fki∵∑k∈P,i∈P‾fki≤∑k∈P,i∈P‾cki=c(P,P‾)∴w≤c(P,P‾)w \le \sum_{k\in P, i \in \overline{P}}f_{ki}\\ \because \sum_{k\in P, i \in \overline{P}}f_{ki}\le \sum_{k\in P, i \in \overline{P}}c_{ki}=c(P,\overline{P})\\ \therefore w \le c(P,\overline{P}) w≤k∈P,i∈P∑​fki​∵k∈P,i∈P∑​fki​≤k∈P,i∈P∑​cki​=c(P,P)∴w≤c(P,P)
  Q.E.D.(证明完毕)

Max-Flow Min-Cut Theorem

  该定理在1956年由Ford-Fulkerson提出,内容是最大流等于最小割容量。上面那个定理是对于任何割法,流都小于割容量。现在是说只要找到最小的割容量的割方案,就找到了最大流。下面我给出证明:
  从流小于等于割容量的证明过程,我们有:
w≤∑k∈P,i∈P‾fki≤∑k∈P,i∈P‾cki=c(P,P‾)w \le \sum_{k\in P, i \in \overline{P}}f_{ki}\le \sum_{k\in P, i \in \overline{P}}c_{ki}=c(P,\overline{P}) w≤k∈P,i∈P∑​fki​≤k∈P,i∈P∑​cki​=c(P,P)
  因为最大流是一个固定的数字。我们只要证明上述不等式存在两个等号同时满足的场景就可以了。第一个不等式满足的条件是什么?是下列条件:
∑k∈P,i∈P‾fik=0\sum_{k\in P, i \in \overline{P}}f_{ik}=0 k∈P,i∈P∑​fik​=0
  也就是从P‾\overline{P}P流入P的流量为0。也就是这个割反向流量为0。那另一个等号呢?就是割的流量等于容量,也就是割的边界全部是饱和边。所以证明的难点就在这里,既要证明存在,又要证明这时候反向流量为0。首先,一个流网络肯定存在一个最大的流模式的。假设这个流模式下的流量为w∗w^*w∗,也就是把最大流定义为w∗w^*w∗。
  然后我们定义一个割(P∗,P‾∗)(P^*,\overline{P}^*)(P∗,P∗),定义如下规则:
  1. s∈P∗s\in P^*s∈P∗
  2. 然后按以下方式递归找P∗P^*P∗中其他点:对于P∗P^*P∗中的i,如果存在j,使得fij<cijf_{ij}\lt c_{ij}fij​<cij​或fji>0f_{ji}\gt0fji​>0,那么把j放入P∗P^*P∗中。
  fji>0f_{ji}\gt0fji​>0的点全部在P∗P^*P∗中,这样就保证了反向流量为0。fji<cjif_{ji}\lt c_{ji}fji​<cji​或fij<cijf_{ij}\lt c_{ij}fij​<cij​保证了不饱和的边不会出现在边界上。这样递归下去肯定可以的,如果不存在满足条件的点,至少还有s嘛。但是会有个问题,会不会包含t呢?如果包含了终点t,那么就证明不存在这样的割。所以现在只需要证明上述方案不会包含t就可以了。
  如果t包含进去了,那么t肯定是按上述的规则链被包含进去的,那么找到t的过程,就定义为一个路径s,v1,v2,…,vi,vi+1,…,ts,v_1,v_2,\dots,v_i,v_{i+1},\dots,ts,v1​,v2​,…,vi​,vi+1​,…,t,这条路径上所有的边,要么是反向边,要么是正向的不饱和边。把这条路径上的最小容量余量cvjvj+1−fvjvj+1c_{v_jv_{j+1}}-f_{v_jv_{j+1}}cvj​vj+1​​−fvj​vj+1​​,定义为β1\beta_1β1​,把最小的反向容量定义为β2\beta_2β2​,把β\betaβ定义为min(β1,β2)min(\beta_1,\beta_2)min(β1​,β2​)。这个时候把这个路径上每个正向边的流量增加β\betaβ,同时每个反向边的流量减少β\betaβ,因为是从s出发的,所以守恒,这样增加是没问题的。这个时候图的流量增加了β\betaβ,与此时流量w∗w^*w∗为图的最大流量矛盾。
  Q.E.D.(证明完毕)

8.10 最大流最小割定理相关推荐

  1. hihocoder 网络流二·最大流最小割定理

    网络流二·最大流最小割定理 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi:在上一周的Hiho一下中我们初步讲解了网络流的概念以及常规解法,小Ho你还记得内容么? ...

  2. Cable TV Network POJ - 1966 最大流最小割定理 点边转化

    最大流最小割定理 任何一个网络的最大流量等于最小割中边的容量之和 即最大流等于最小割 点边转化 节点可以拆为入点和出点 把点的属性添加到入点和出点之间的边上 图的边也可以分两截 在中间加一个节点 把边 ...

  3. UVA-10480 Sabotage(最大流最小割定理+输出路径)

    题目链接:UVA-10480 Sabotage The regime of a small but wealthy dictatorship has been abruptly overthrown ...

  4. nyoj 677 碟战(最大流最小割定理)

    碟战 时间限制:2000 ms  |  内存限制:65535 KB 难度:4 描述 知己知彼,百战不殆!在战争中如果被敌人掌握了自己的机密,失败是必然的.K国在一场战争中屡屡失败,就想到自己的某些城市 ...

  5. 最大流最小割定理(max flow/min cut theory)

    百度文库里面有个地址,讲的比较详细. http://wenku.baidu.com/link?url=gPXhYCduLNgZaOkKIltNDAgPGwuMTpRX7a0utvVFuqDAP9o1j ...

  6. GraphCut、最大流最小割定理

    G=(V,E):V为点集,E为边集: 节点集V中的节点分为: (1)终端节点.不包含图像像素,用S和T表示.S为源点,T为汇点.图像分割中通常用S表示前景目标,标签设为1:T表示背景,标签为0. (2 ...

  7. 流网络的最小割问题c语言,网络流基础-最大流最小割定理

    最大流最小割定理,指网络流的最大流等于其最小割. 最大流指符合三个性质的前提下,从S到T能流过的最大流量. 最小割指符合割的定义,最小的割容量. 求最大流: 不断寻找增广路,计算能增加的最小流量,然后 ...

  8. 网络流(二)——最大流最小割定理

    最小割 <1>什么是割?     引例:你的仇人是一个工厂老板.你要炸掉一些车,让他每个货物都运不到销售点.         炸掉越大的车,你越容易被发现.你希望炸掉的车的容量之和尽量小. ...

  9. hihoCoder 1378 网络流二·最大流最小割定理 (网络流学习#2 记录)

    题目链接:http://hihocoder.com/problemset/problem/1378 代码: #include<bits/stdc++.h> using namespace ...

最新文章

  1. 验证码在服务器不显示
  2. 【产品干货】Uber产品经理首次在中国自述产品理念:我们看中的并非只是钱
  3. EasyUI中搜索框的简单使用
  4. 如果你的船不进来,就游出去迎接它 乔纳森温特斯
  5. 担保债务凭证(Collateralized Debt Obligation,简称CDO) CLO/CBO
  6. qt linux 串口eventdriven,详解 Qt 串口通信程序全程图文 (1)
  7. 【UVA - 11383】Claw Golden Tiger (二分图最优匹配,KM算法原理)
  8. 远程桌面登录 Windows Server 2003时提示无权限
  9. java plug机制_【maven实战】20-插件解析机制
  10. mysql双向复制_MySQL 双向复制
  11. 【译】jquery基础教程(jQuery Fundamentals)——(第一部分)概述
  12. java 反射 动态调动set_通过Java的反射动态调用类的set和get方法
  13. cocos2dx 3.16 VS+BabeLua lua环境配置与代码调试
  14. 也评 阿里 P10 赵海平对王垠的面试
  15. 图像补全(image inpainting)
  16. Dewplayer MP3网页播放器
  17. boost::python::detail::destroy_referent相关的测试程序
  18. 电子商务网站用户行为分析及服务推荐
  19. android联系人中英文混合排序
  20. 计算机英语背单词技巧,闽教小学英语快速单词记忆法,怎么背单词下午、计算机、教室、长颈鹿、请...

热门文章

  1. 12306订票客户端 FOR .NET 演示项目 【1】项目概况
  2. 大型计算机游戏排行榜,iOS大型游戏
  3. 人工智能、深度学习和AIoT
  4. 小程序关联微信公众号如何确定用户的唯一性
  5. 不错的2007年电子记账本
  6. 〔魅惑之都〕电脑操作最忌讳的十八个小动作!!用电脑的请注意看哟~~
  7. 50行代码完成微信小程序-跳一跳辅助工具,让你成为朋友圈最靓的仔
  8. 测试通达信指标胜率的软件,选股指标成功率测试工具(源码 副图/预警 通达信)非常实用...
  9. C语言修改同花顺程序吗,炒股软件哪家强?第一篇——同花顺
  10. 【从零开始学习人工智能】人工智能简介 - 07机器学习