1 / 34

第八章 网络流图

第八章 网络流图. 一个计算机厂家有两个生产点 x 1 ,x 2 ,两个送货点 y 1 ,y 2 ,如下图所示,各边表示该路线最大货物运送量,或者容量。 问题:厂家希望找出, 每边的运送量不会超出其容量限制,通过这个交通网络能够运送的最大货物量。. 8.1 网络流图. 下图表示一种货运方案:边上第一位表示边上的货运量,第二位表示容量。. 8.1 网络流图. 流经每个点“流入量”等于其“流出量”; 源点的流出总量=汇点的流入总量=6; 方案的运量是6;. 多源点和多汇点的网络图可以通过增加一个“超源点”和“超汇点”转化为单源点和单汇点的网络流图。. 8.1 网络流图.

jin-flowers
Télécharger la présentation

第八章 网络流图

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第八章 网络流图

  2. 一个计算机厂家有两个生产点x1,x2,两个送货点y1,y2,如下图所示,各边表示该路线最大货物运送量,或者容量。一个计算机厂家有两个生产点x1,x2,两个送货点y1,y2,如下图所示,各边表示该路线最大货物运送量,或者容量。 问题:厂家希望找出, 每边的运送量不会超出其容量限制,通过这个交通网络能够运送的最大货物量。 8.1 网络流图

  3. 下图表示一种货运方案:边上第一位表示边上的货运量,第二位表示容量。下图表示一种货运方案:边上第一位表示边上的货运量,第二位表示容量。 8.1 网络流图 • 流经每个点“流入量”等于其“流出量”; • 源点的流出总量=汇点的流入总量=6; • 方案的运量是6;

  4. 多源点和多汇点的网络图可以通过增加一个“超源点”和“超汇点”转化为单源点和单汇点的网络流图。多源点和多汇点的网络图可以通过增加一个“超源点”和“超汇点”转化为单源点和单汇点的网络流图。 8.1 网络流图

  5. [网络]设有向图 N=(V,A),在A上定义非负实函数C,使得: N中有且只有一个入度为0的点 s 和一个出度为0的点 t,分别称为源和汇; 任意的边aijA,都被赋以实权cij 0,称为aij的容量。 称这样的N为一个网络(network)。 8.1 网络流图

  6. [容许流]网络N=(V,A)的容许流(简称流)是A上的一个非负实函数 f ,满足: 8.1 流 fij=f(vi ,vj) • 网络N中至少有一个流 f = 0 (零流) [例] 求下图的流

  7. 8.1 流量 [定理8-1]给定网络 N=(V,A)的一个流f,源点 s 的流出量等于汇点 t 的流入量,即: [证明] 留作习题。

  8. [流量]设f是网络N=(V,A)的一个流,其流量val f定义为: 8.1 流量与最大流 [最大流] 记最大流量 具有最大流量的流 f max 称为N的一个最大流。

  9. [割切]网络 N=(V,A),s和 t分别是网络的源和汇,设SV,S´=VS,满足sS,t S´。定义: (S, S´)= {aij | aij =(vi ,vj)A, viS, vjS´}  A 称为N的一个割切。 8.2 割切

  10. 割切的容量 c(S, S´) = cij, aij  (S, S´) 割切的流量 f(S, S´) =  fij, aij (S, S´) 显然有 f(S, S´)  c(S, S´) 8.2 割切 [例] 下图所示割切 f(S, S´) = 30, f(S’, S)=3, c(S,S’)= 62

  11. [例 ]求下图的所有割切及其容量 v2 v1 v4 v3

  12. [定理8-2]设网络N中一个从 s 到 t的流 f 的流量为w, (S, S´)为任意一个割切,则 w= f(S, S´) f(S´, S) [证明] 记 f +(v)=jV fvj, f -(v)= jV fjv f +(s) - f -(s) = w, f +(v) – f -(v) = 0 , vS-{s} w = vS(f +(v) –f–(v)) = vS(jV fvj - jV fjv) = (vSjS fvj - vSjS fjv) + (vSjS’ fvj - vSjS’fjv) = 0 + (vSjS’ fvj - vSjS’ fjv) = f(S, S´) f(S´, S) 8.2 割切

  13. [推论1]对网络 N中任意流量w和割切 (S, S´),有 w  c(S, S´)。 [证明] w= f(S, S´) f(S´, S)  f(S,S’)  c(S,S’) [推论2]最大流量不大于最小割切容量,即: wmax  min{c(S, S´)}。 [证明] 由推论1直接得到。 [推论3]对网络 N的流f和割切 K=(S, S´),如果val f = c(S, S´), 则f是最大流, K=(S, S´)是最小割切。 [证明] 设f’是最大流,K’是最小切割,则 val f  val f’ c(K’)  c(S, S´) 8.2 割切

  14. [定义]网络 N=(V,A),设由无重复顶点构成弱连通路 P=(v1, v2,…, vk),vi A,i=1.. k 若<vi , vi+1>A,(i=1..(k-1)),则称<vi, vi+1>为前(正)向弧,否则称之为后(逆 )向弧。 8.3 最大流最小割定理

  15. 网络 N=(V,A), f为N中的流,对N中的每条无重复顶点弱连通路 P=(v1, v2,…, vk),vi A,i=1.. k,定义: ij(P) = cij– fij 若 <vi, vj>为前向弧 ij(P) = fij 若 <vi, vj>为后向弧 (P) = min{ij(P) } (P)为在满足流的容许条件下沿P增加的流量的最大值。增量的方法是将P上的前向弧+ ,后向弧  ,则当P为st时,w´=  f ´si =  fsi+  = w +   =0时,称P是 f 饱和的,否则称P是 f 非饱和的。不饱和道路的上的边称为不饱和的:对于正向边 fij < cij ;对于逆向边fij >0. 8.3 最大流最小割定理

  16. [f可增路]设N、f、P如上所述,一条从 s 到 t的f非饱和路P,称为N中的一条 f可增流路。 8.3 最大流最小割定理 不存在可增流道路 存在可增流道路

  17. [定理8-3]网络N中的流 f是最大流当且仅当N中不包含任何 f可流增路。 [证明]必要性:设f是最大流. 如果N有f-可增流道路, 则通过增流可以得到更大的流,矛盾! 充分性:设N不存在f可增流道路。令S为通过f不饱和道路与源点s连通的结点集,则sS, tS, 所以(S,S’)是一个割切。 下证每个(S,S’)边时f饱和的,每个(S’,S)边也是f饱和的。 设(u,v)(S,S’), 则存在f-不饱和道路P=(s,…, u), 如果(u,v)不是f饱和的,则道路P可扩展至v, 与vS’矛盾!同样可证,如果(u,v)(S’,S), 则逆向边(u,v)是f饱和的,fvu=0。所以, f的流量val f = f(S,S’)-f(S’,S) = f(S,S’) = c(S, S’). 8.3 最大流最小割定理

  18. 由此证得最大流最小割定理(the max-flow min-cut theorem) [定理8-4] (Ford-Fulkerson) 在任何运输网络中,最大流的流量等于最小割切的容量,即 wmax = min {c(S, S´)} 定理8-3时一个构造性证明,由此可抽取出求最大流的算法,称为Ford-Fulkerson 标号 算法。 [基本思想]由一个流开始,系统地搜寻f可增流道路,然后在此道路上增流,继续这个增流过程,直至不存在可增流道路。 8.3 最大流最小割定理

  19. [基本方法] 由源点s为根构造可增流树T,即根结点出发每条道路都是f-不饱和的: 初始T只包含s, S = V(T); 如果存在正向f-不饱和边(u,v)(S,S’), 或者逆向f-不饱和边(u,v) (S’,S), 则将(u,v)加入T; 重复2,直至可不饱和树到达汇点或者不能再生长: (1) 不饱和树不能到达汇点,f已经是最大流; (2) 不饱和树到达汇点,将可增流道路增流,转2,继续寻找可增流道路。 8.4 Ford-Fulkerson 标号算法

  20. 标号:给结点标号(dv,v): 结点v由dv扩展出来, 即存在s出发经过dv到达v的不饱和道路P,v是P上的最大增流量。 [正向标号] 如果有正向边e=(u,v), f(e)<c(e), 并且u已经标号,v没有标号,则v标号为(u+, v), v=min{v,c(e)-f(e)} [逆向标号] 如果有逆向边e=(v,u), f(e)>0, 并且u已经标号,v没有标号,则v标号为(u-, v), v=min{v,f(e)} 8.4 Ford-Fulkerson 标号算法

  21. 选择一个流f; (开始标号)给s标号(-,); 如果不存在可标号结点,转7; 否则, 选择一个可标号结点v进行标号,转4; 如果v=t, 转5增流,否则转3; (增流)给可增流道路上的所有边增流:如果dv=u+ , f(u,v) = f(u,v) + t; 如果dv=u- , f(v,u) = f(v,u) - t; 转2, 重新标号; f是最大流,结束。 8.4 Ford-Fulkerson 标号算法

  22. 对于上图,如果交替选择可增流道路P1=(s,u,v,t)和P2=(s,v,u,t), 每次增流一个单位,则算法需要2m次增流,即算法的复杂度不依赖于图的规模(|V|,|A|),而是依赖于一个容量参数。 8.4 Edmonds-Karp 的改进算法

  23. [Edmonds-Karp算法]标号原则:先标号,先检查 ,即从先标号的结点扩展不饱和道路,由此可以找到最短可增流道路。 8.4 Edmonds-Karp 的改进算法 如左图,首先找到 P1=(s,u,t), 增流后P1饱含,然后找到P2=(s,v,t), 增流后得到最大流。

  24. 习题 求下图的最大流及其最小割切。

  25. 最大流

  26. Let v and w are two vertices in a graph. A collection of paths from v to w are called edge-disjoint paths if no two paths in it share an edge. p u s x q v w y r t z 8.5 Menger’s theorem Similarly, we can define vertex-disjoint paths.

  27. Lemma Let N be a network with source s and sink t in which each arc has unit capacity. Then The value of a maximum flow in N is equal to the maximum number m of arc-disjoint directed (s,t)-paths in N; and The capacity of a minimum cut in N is equal to the minimum number n of arcs whose deletion destroys all directed (s,t)-paths in N. 8.5 Menger’s theorem

  28. Theorem (Menger) Let s and t be two vertices of a digraph D. Then the maximum number of arc-disjoint directed (s,t)-paths in D is equal to the minimum number of arcs whose deletion destroys all directed (s,t)-paths in D. 8.5 Menger’s theorem

  29. Theorem (Menger, undirected version) Let s and t be two vertices of a graph G. Then the maximum number of edge-disjoint (s,t)-paths in G is equal to the minimum number of edges whose deletion destroys all (s,t)-paths in G. Proof: Apply the directed version of Menger’s theorem to the associated digraph of G (an edge becomes two directed edges). 8.5 Menger’s theorem

  30. Theorem Let s and t be two vertices of a directed graph D such that s is not joined to t. Then the maximum number of vertex-disjoint (s,t)-paths in G is equal to the minimum number of vertices whose deletion destroys all directed (s,t)-paths in D. Proof: by converting it to the arc-version of Menger’s theorem. 8.5 Menger’s theorem

  31. Construct a new digraph D’ from D by Splitting each vertex vV-{s,t}; To each edge-disjoint (s,t)-path in D’ there corresponds a vertex-disjoint directed (s,t)-path in D;and vice verse;

  32. Theorem Let s and t be two nonadjacent vertices of a graph G. Then the maximum number of internally-disjoint (s,t)-paths in G is equal to the minimum number of vertices whose deletion destroys all (s,t)-paths in G. Proof: apply Menger’s theorem for directed graphs to the associated graph of G. 8.5 Menger’s theorem

  33. Theorem Menger’s theorem implies Hall’s theorem. g1 b1 g2 b2 g3 v w b3 g4 b4 g5 8.5 Menger’s theorem

  34. 证明: 设G=(V1,V2)是一个二分图. 证明如果对于V1的任意子集A, |A| <= |N(A)|, 则存在V1至V2的完全匹配. 在G上添加两个结点v,w, 使得v与V1的所有结点相邻, w与V2 的所有结点相邻. 显然, 存在V1至V2的完全匹配当且仅当v至w的结点不相交道路数目是|V1|=k. 根据Menger定理, 只需证明分割v,w的最少结点数是k. 设S是分割v,w的结点集, 且有V1的子集A和V2的子集B构成. 因为AB是一个vw分离集, 不存在V1-A与V2-B之间的边, 所以N(V1-A)B, 再根据 Hall条件, |V1-A|<=|N(V1-A)|<=|B|. 所以, |S|=|AB|=|A|+|B|>=|V1|=k. 8.5 Menger’s Theorem

More Related