340 likes | 487 Views
第八章 网络流图. 一个计算机厂家有两个生产点 x 1 ,x 2 ,两个送货点 y 1 ,y 2 ,如下图所示,各边表示该路线最大货物运送量,或者容量。 问题:厂家希望找出, 每边的运送量不会超出其容量限制,通过这个交通网络能够运送的最大货物量。. 8.1 网络流图. 下图表示一种货运方案:边上第一位表示边上的货运量,第二位表示容量。. 8.1 网络流图. 流经每个点“流入量”等于其“流出量”; 源点的流出总量=汇点的流入总量=6; 方案的运量是6;. 多源点和多汇点的网络图可以通过增加一个“超源点”和“超汇点”转化为单源点和单汇点的网络流图。. 8.1 网络流图.
E N D
一个计算机厂家有两个生产点x1,x2,两个送货点y1,y2,如下图所示,各边表示该路线最大货物运送量,或者容量。一个计算机厂家有两个生产点x1,x2,两个送货点y1,y2,如下图所示,各边表示该路线最大货物运送量,或者容量。 问题:厂家希望找出, 每边的运送量不会超出其容量限制,通过这个交通网络能够运送的最大货物量。 8.1 网络流图
下图表示一种货运方案:边上第一位表示边上的货运量,第二位表示容量。下图表示一种货运方案:边上第一位表示边上的货运量,第二位表示容量。 8.1 网络流图 • 流经每个点“流入量”等于其“流出量”; • 源点的流出总量=汇点的流入总量=6; • 方案的运量是6;
多源点和多汇点的网络图可以通过增加一个“超源点”和“超汇点”转化为单源点和单汇点的网络流图。多源点和多汇点的网络图可以通过增加一个“超源点”和“超汇点”转化为单源点和单汇点的网络流图。 8.1 网络流图
[网络]设有向图 N=(V,A),在A上定义非负实函数C,使得: N中有且只有一个入度为0的点 s 和一个出度为0的点 t,分别称为源和汇; 任意的边aijA,都被赋以实权cij 0,称为aij的容量。 称这样的N为一个网络(network)。 8.1 网络流图
[容许流]网络N=(V,A)的容许流(简称流)是A上的一个非负实函数 f ,满足: 8.1 流 fij=f(vi ,vj) • 网络N中至少有一个流 f = 0 (零流) [例] 求下图的流
8.1 流量 [定理8-1]给定网络 N=(V,A)的一个流f,源点 s 的流出量等于汇点 t 的流入量,即: [证明] 留作习题。
[流量]设f是网络N=(V,A)的一个流,其流量val f定义为: 8.1 流量与最大流 [最大流] 记最大流量 具有最大流量的流 f max 称为N的一个最大流。
[割切]网络 N=(V,A),s和 t分别是网络的源和汇,设SV,S´=VS,满足sS,t S´。定义: (S, S´)= {aij | aij =(vi ,vj)A, viS, vjS´} A 称为N的一个割切。 8.2 割切
割切的容量 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
[例 ]求下图的所有割切及其容量 v2 v1 v4 v3
[定理8-2]设网络N中一个从 s 到 t的流 f 的流量为w, (S, S´)为任意一个割切,则 w= f(S, S´) f(S´, S) [证明] 记 f +(v)=jV fvj, f -(v)= jV fjv f +(s) - f -(s) = w, f +(v) – f -(v) = 0 , vS-{s} w = vS(f +(v) –f–(v)) = vS(jV fvj - jV fjv) = (vSjS fvj - vSjS fjv) + (vSjS’ fvj - vSjS’fjv) = 0 + (vSjS’ fvj - vSjS’ fjv) = f(S, S´) f(S´, S) 8.2 割切
[推论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 割切
[定义]网络 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 最大流最小割定理
网络 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为st时,w´= f ´si = fsi+ = w + =0时,称P是 f 饱和的,否则称P是 f 非饱和的。不饱和道路的上的边称为不饱和的:对于正向边 fij < cij ;对于逆向边fij >0. 8.3 最大流最小割定理
[f可增路]设N、f、P如上所述,一条从 s 到 t的f非饱和路P,称为N中的一条 f可增流路。 8.3 最大流最小割定理 不存在可增流道路 存在可增流道路
[定理8-3]网络N中的流 f是最大流当且仅当N中不包含任何 f可流增路。 [证明]必要性:设f是最大流. 如果N有f-可增流道路, 则通过增流可以得到更大的流,矛盾! 充分性:设N不存在f可增流道路。令S为通过f不饱和道路与源点s连通的结点集,则sS, tS, 所以(S,S’)是一个割切。 下证每个(S,S’)边时f饱和的,每个(S’,S)边也是f饱和的。 设(u,v)(S,S’), 则存在f-不饱和道路P=(s,…, u), 如果(u,v)不是f饱和的,则道路P可扩展至v, 与vS’矛盾!同样可证,如果(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 最大流最小割定理
由此证得最大流最小割定理(the max-flow min-cut theorem) [定理8-4] (Ford-Fulkerson) 在任何运输网络中,最大流的流量等于最小割切的容量,即 wmax = min {c(S, S´)} 定理8-3时一个构造性证明,由此可抽取出求最大流的算法,称为Ford-Fulkerson 标号 算法。 [基本思想]由一个流开始,系统地搜寻f可增流道路,然后在此道路上增流,继续这个增流过程,直至不存在可增流道路。 8.3 最大流最小割定理
[基本方法] 由源点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 标号算法
标号:给结点标号(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 标号算法
选择一个流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 标号算法
对于上图,如果交替选择可增流道路P1=(s,u,v,t)和P2=(s,v,u,t), 每次增流一个单位,则算法需要2m次增流,即算法的复杂度不依赖于图的规模(|V|,|A|),而是依赖于一个容量参数。 8.4 Edmonds-Karp 的改进算法
[Edmonds-Karp算法]标号原则:先标号,先检查 ,即从先标号的结点扩展不饱和道路,由此可以找到最短可增流道路。 8.4 Edmonds-Karp 的改进算法 如左图,首先找到 P1=(s,u,t), 增流后P1饱含,然后找到P2=(s,v,t), 增流后得到最大流。
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.
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
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
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
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
Construct a new digraph D’ from D by Splitting each vertex vV-{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;
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
Theorem Menger’s theorem implies Hall’s theorem. g1 b1 g2 b2 g3 v w b3 g4 b4 g5 8.5 Menger’s theorem
证明: 设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构成. 因为AB是一个vw分离集, 不存在V1-A与V2-B之间的边, 所以N(V1-A)B, 再根据 Hall条件, |V1-A|<=|N(V1-A)|<=|B|. 所以, |S|=|AB|=|A|+|B|>=|V1|=k. 8.5 Menger’s Theorem