1、工程数学考试最后一道题:论述网络优化中的主要问题及相应算法。答:1、最短路问题定义:设 G 是一个权图,路 P 的权 w(P)称为 P 的长度,两点 u,v 之间最短路的长度称为 u,v 之间的距离,记为 (u,v ),即不 连 通连 通路是 vd,-),(|)min,0),(定义:设 G 是一个权图,u0V(G),SV(G),u0 到 S 内各点的所有路中长度最小者,称为 u0 到 S 的最短路,其长度称为 u0 到 S 的距离,记为(u0, S)讨论最短路问题:1) 假设 G 是简单图。2) 因为当 w(uv)时,我们认为 u,v 重合,所以我们不妨假定所有边的权均为正数。根据假设,具体算
2、法有:Dijkstra 算法:假设 S 是 V 的真子集,u 0S,令 SVS,若 Pu 0 是从 u0 到 S的v最短路,则显然 , ,且 P 的(u 0, )节必然是最短 (u0, )路,所以v)(,(min),),(0,0 vwudPwudSvu利用该公式,便可按如下过程求最短路首先,确定距 u0 最近的一个顶点令 S0u 0 ,由于距 u0 最近的顶点必为 u0 的邻点,故只需求出 u1 使w(u0u1)minw(u 0v)|v ,即 u0u1 是与 u0 关联的最短边,显然,u 0u1 便是最短(u 0,u 1)-路又令S1u 0,u 1 ,且用 P1 表示路 u0u1,一般地,若S
3、k u0,u 1,u k以及相应的最短路 P1,P 2,P k 已经确定,则可用(1)式来计算 ,并选取顶点 uk+1 使 d(u0,u k+1) 这时,),(SdS),(0Sdd(u0,u k+1)d(u 0,u j)w(u juk+1)对某个 k 成立将边 uj uk+1 连接到路 Pj 上,即得最短(u 0,u k+1)-路 Pk+1,再令 Sk+1u 0,u 1, ,u k,u k+1 ,这样一直下去,直到 ,即可求出 u0 到 G 中任意一点的最短路S2、最小生成树问题Kruskal 算法:Kruskal 算法的直观思想便是设有赋权图 G,首先找到 G 的权最小的边,并取出来。然后,
4、在剩下的边中再找出权最小且与已选出的边不构成回路的,再把它取出来,一直下去,直到选不出边在上述过程中,我们得到的图是无回路的。进一步地,我们可证明我们最终得到的是一棵最小生成树。设 G 是简单连通权图,w 是其权函数。(1) 选取 G 的一边 e1,使 w(e1)minw (e)|eE,令 E1e 1 ,(2) 若已选出 Eie 1,e i ,那么,从 EE i 中选取一边 ei1 ,使() E ie i1 的导出子图中不含回路;() w(e i1 )min w(e)| eEE i , Ei e的导出子图无回路(3) 若 ei1 存在,令 Ei1 E ie i1 ,i1i,转(2);若 ei1
5、 不存在,则输出 Eie 1,e i ,算法停止。可以证明,如上算法所得到的边集的导出子图 T*(就称其为算法得到的子图) ,即为 G 的最小生成树。定理 Kruskal 算法得到的图 T*是 G 的最小生成树证明 由算法可知,T *必包含了 G 的所有顶点且是连通、无回路的,从而可知 T*是生成树因而,若设 G 有 n 个顶点,则 T*中也必有 n 个顶点,从而T*中必有 n 1 条边,于是, T*是边集 En1 e 1,e 2,e n1 的导出子图,这里,e 1,e 2,e n1 依次是算法产生的边下面用反证法证明 T*是最小生成树若不然,取所有最小生成树中与 T*具有最多公共边者为 T1
6、,则边集 E(T*) E(T1),设 ek 是 T*中第一条不在 T1 中的边,即 e1,e 2,e k1 E(T 1), E(T1)由树的性质,T 1e k 必有回路 C由于keT*中无回路, C 中的边必有不在 T*中者,设回路中的边 ek E(T*),显然T2( T1e k) ek 也是一棵生成树,且w(T2)w(T 1)w (ek)w(e k)因为 e1,e 2,e k1 ,e k E(T1),故这 k 条边不构成回路,由 Kruskal 算法中ek 的取法知 w(ek)w(e k)所以,w(T 2)w(T 1),因此 T2 也是一棵最小生成树,且与 T*的公共边多于 T1,与 T1
7、的定义矛盾这样就证明了 T*必为最小生成树3、最大流问题设 N V,U为一个加权的有向图,权值为非负整数,若存在 X,Y V,满足 XY =,X 中所有顶点的入度均为 0,Y 中所有顶点的出度均为 0,则称有向图 N 为网络,并将 X 中的点称为源点,将 Y 中的点称为聚点(汇点) ,N 中其他顶点称为中间点,N 上的权函数 c 也称为容量函数一条弧ai,j的权值称为 a 的容量,记为 c(a)或 c()或 c(i,j)我们主要讨论|X|=|Y|=1 的情况,即假设网络中恰有一个源点 x 和一个聚点 y,并总是将中间点集合记为 I设 N V,U为恰含有一个源点和一个聚点的网络,f 为 N 的弧
8、集 U 上的实数值函数,V 1,V 2V,用V 1,V 2表示起点在 V1中,终点在 V2中的弧的集合,记,21,21)(),(Vaff当 V1=i时可以将 f(V1,V2)简记为 f(i,V2)定义 1 设 f 为网络 NV,U的弧集 U 上的实数值函数,如果函数 f满足(1) 容量约束:0f(i,j)c(i,j), i,jU,(2) 守恒条件:f(i,V)f(V, i), i I,则称函数 f 为网络 N 的一个容许流,简称为流;当 N 的源点为 x,聚点为 y 时,称 f(x,V)为流的值,简记为 f x, y由定义 2 可以证明 .,0,),(),( yifxifiVfifx定义 2
9、设函数 f 为网络 NV,U的一个流,a U,如果 f(a)=0,则称弧 a 是 f -零的;如果 f (a)0,则称弧 a 是 f 正的;如果 f (a) c (a),则称弧 a是 f 不饱和的;如果 f (a)= c (a),则称弧 a 是 f 饱和的4、最大匹配定义 1 设图 GV,E ,M E,如果 M 中任意两条边在 G 中均不相邻,则称 M 是 G 的一个匹配M 中一条边的两个端点称为在 M 下是配对的定义 2 若匹配 M 的一条边与顶点 v 关联,则称 M 饱和 v,或称 v 是 M-饱和的,否则称 v 是 M-不饱和的定义 3 如果 M 是 G 的一个匹配,对 G 的任意匹配
10、M ,有| M | | M |,则称 M 是 G 的最大匹配定义 4 设 M 是 G 的一个匹配,边在 E(G)- M 和 M 中交错出现的路称为M-交错路,起点和终点都是 M-不饱和点的 M-交错路称为 M-增广路定理 1 图 G 的一个匹配 M 是最大匹配的充要条件是 G 不包含 M-增广路证明 设 M 是 G 的一个最大匹配,若 G 包含一条 M-增广路v0v1v2v2m+1,设M = (M v 1v2,v 3v4,v 2m-1v2m) v0v1,v 2v3,v 2mv2m+1 ,显然,M E,且 M 是 G 的一个匹配因 |M | M|1,与 M 是最大匹配矛盾因而,G 不包含 M-增广路反之,设 G 不包含 M-增广路,若 M 不是最大匹配,令 M 是 G 的一个最大匹配,设 H 是由 M M 导出的 G 的子图,则 H 的每个顶点在 H 中的度只能是 1 或 2,因此 H 中的每一个分支或是一个边在 M 和 M 中交错的偶圈,或是边在 M 和 M 中交错的路由 | M |M| ,H 包含的 M 的边多于 M 的边,因此必有 H 中的一条路 P 开始于 M 的边且终止于 M 的边,故在 H 中被 M 所饱和的 P 的起点和终点在图 G 中就是 M-不饱和的,于是 P 是 G 的一条 M-增广路,矛盾因而,M 是最大匹配