图和子图 图和简单图 图G=(VE),其中 }V--项顶点集 V-顶点数 E={e1,e2……,e} E--边数 例。左图中 V={a,b,,f}, E=ip 注意,左图仅仅是图G的几何实现(代表),它们 有无穷多个。真正的图G是上面所给出式子,它与顶点的位 置、边的形状等无关。不过今后对两者将经常不加以区别 称边ad与顶点a(及d)相关联。也称顶点b及f) 与边bf相关联 称顶点a与e相邻。称有公共端点的一些边彼此相邻, 例如p与af f 环(loop, selfloop):如边l 棱(link):如边aea G=(VE 重边:如边p及边q 简单图:( simple graph)无环,无重边 平凡图:仅有一个顶点的图(可有多条环 条边的端点:它的两个顶点 记号:(G)=|(G E(G)=|E(G)。 习题 1.1.1若G为简单图,则E≤ 1.1.2n(≥4)个人中,若每4人中一定有一人认识其他3人,则一定有一人认识其他n-1人 同构 在下图中, 图G恒等于图H,记为G=H台VG=V(H,E(G)=E(H)。 图G同构于图FVG)与V(F),E(G)与E(F)之间各存在一一对应关系,且这二对应关系 保持关联关系。 记为G≡F 注往往将同构慨念引伸到非标号图中,以表达两个图在结构上是否相同。 d d x d w GV,E) HV,E) FV,E)
1 图和子图 图和简单图 图 G = (V, E), 其中 V = {} V ---顶点集, ---顶点数 E = { e e e 1 2 , ,......, } E ---边集, ---边数 例。 左图中, V={a, b,......,f}, E={p,q, ae, af,......,ce, cf} 注意, 左图仅仅是图 G 的几何实现(代表), 它们 有无穷多个。真正的 图 G 是上面所给出式子,它与顶点的位 置、边的形状等无关。不过今后对两者将经常不加以区别。 称 边 ad 与顶点 a (及d) 相关联。也称 顶点 b(及 f) 与边 bf 相关联。 称顶点 a 与 e 相邻。称有公共端点的一些边彼此相邻, 例如 p 与 af 。 环(loop,selfloop):如边 l。 棱(link):如边 ae。 重边:如边 p 及边 q。 简单图:(simple graph)无环,无重边 平凡图:仅有一个顶点的图(可有多条环)。 一条边的端点:它的两个顶点。 记号: (G) = V(G), (G) = E(G).。 习题 1.1.1 若 G 为简单图,则 2 。 1.1.2 n ( 4 )个人中,若每 4 人中一定有一人认识其他 3 人,则一定有一 人认识其他 n-1 人。 同构 在下图中, 图 G 恒等于图 H , 记为 G = H VG)=V(H), E(G)=E(H)。 图 G 同构于图 F V(G)与 V(F), E(G)与 E(F)之间 各 存在一一对应关系,且这二对应关系 保持关联关系。 记为 G F。 注 往往将同构慨念引伸到非标号图中,以表达两个图在结构上是否相同。 d e f G=(V, E) p q a b c r a y z x w b c d e G=(V, E) x w b c d e a y z H=(V’, E’) x’ d’ w’ a’ b’ c’ y’ e’ z’ F=(V’’, E’’)
注判定两个图是否同构是 NP-hard问题 完全图 complete graph)Kn 空图( empty g.)台E=必 V(sV为独立集V中任二顶点都互不相邻 二部图(偶图, bipartite g.)G=(X,Y;E)台存在VG)的一个2-划分(X,Y),使Ⅹ与Y都 是独立集 完全二部图Km,n台二部图G=(X,Y),其中X和Y之间的每对顶点都相邻,且X=m, K K4 Ke 部图 类似地可定义,完全三部图(例如Km,np),完全n-部图等 例。用标号法判定二部图。 习题 1.2.1G≡H当wG)=vH),(G)=ε(H)。并证明其逆命题不成立 1.2.2证明下面两个图不同构: 12.3证明下面两个图是同构的: 124证明两个简单图G和H 同构 存在一一映射f:V(G) ¤→V(H),使得u∈E(G)当且仅当 fu)f(v)∈E(H)。 1.2.5证明:(a)(Kmn)=mn; (b).对简单二部图有ε≤v2/4 1.2.6记Tmn为这样的一个完全m-部图:其顶点数为n,每个部分的顶点数为nm或{nm} 证 (a). E(Tmn)= 2/+(m-1 其中k=[mm (b)’.对任意的n顶点完全m-部图G,一定有c(G)≤(Tm),且仅当GTm时等式才成立 127所谓k方体是这样的图:其顶点是由0与1组成的有序k元组,其二顶点相邻当且仅当它 们恰有一个坐标不同。证明k-方体有个顶点,k*2k1条边,且是一偶图 12.8简单图G的补图G是指和G有相同顶点集V的一个简单图,在G中两个顶点相邻当且 仅当它们在G不相邻。 (a).画出Kn和Kmn (b)如果G≡G则称简单图G为自补的。证明:若G是自补的,则v≡0,1(mod4)
2 注 判定两个图是否同构是 NP-hard 问题。 完全图(complete graph) Kn 空图(empty g.) E = 。 V’ ( V) 为独立集 V’中任二顶点都互不相邻。 二部图(偶图,bipartite g.) G = (X, Y ; E) 存在 V(G) 的一个 2-划分 (X, Y), 使 X 与 Y 都 是独立集。 完全二部图 Km,n 二部图G = (X, Y),其中X和Y之间的每对顶点都相邻,且 X = m, Y = n 。 类似地可定义,完全三部图(例如 Km,n,p),完全 n-部 图等。 例。用标号法判定二部图。 习题 1.2.1 G H (G) = (H) , (G) = (H) 。 并证明其逆命题不成立。 1..2.2 证明下面两个图不同构: 1.2.3 证明下面两个图是同构的: 1.2.4 证明两个简单图 G 和 H 同构 存在一一映射 f : V(G) →V(H) ,使得 uv E(G)当且仅当 f(u)f(v) E(H) 。 1.2.5 证明:(a).(Km,n ) = mn ; (b). 对简单二部图有 2 /4 . 1.2.6 记 Tm,n 为这样的一个完全 m-部图:其顶点数为 n,每个部分的顶点数为[n/m]或{n/m}个。 证明: (a). (Tm,n) = n k m − k + − + 2 1 1 2 ( ) 其中 k =[n/m] . (b)* . 对任意的 n 顶点完全 m-部图 G,一定有 (G) (Tm,n),且仅当 G Tm,n 时等式才成立。 1.2.7 所谓 k-方体是这样的图:其顶点是由 0 与 1 组成的有序 k-元组,其二顶点相邻当且仅当它 们恰有一个坐标不同。证明 k-方体有个顶点,k*2 k-1 条边,且是一偶图。 1.2.8 简单图 G 的补图 Gc 是指和 G 有相同顶点集 V 的一个简单图,在 Gc中两个顶点相邻当且 仅当它们在 G 不相邻。 (a). 画出 Kc n 和 Kc m,n。 (b). 如果 G G c则称简单图 G 为自补的。证明:若 G 是自补的,则 0, 1 (mod 4) 二部图 K1 K2 K3 K4 K5 K3,3 K1,5 K2,2,2
关联矩阵M(G)与邻接矩阵A(G) M(G)=[;, Ive A(G=Laiv 其中m.;=顶点v与边e;的关联次数=0,1,2. a,;=连接顶点v;与v的边数。 例 0 00|v M(G l 1001 000 0 V4 子图 子图( subgraph) HCG V(HsV(G),E(H≌E(G)。 真子图HcG。 母图( super graph) 生成子图( spanning subg)eHG且v(H)=V(G) 生成母图 基础简单图( underlying simple g)。 导出子图( induced subg)GV,(非空vV) 台以V为顶点集,以G中两端都在V上的边全体为边集构成的G的子图。 边导出子图G[E] 非空EE 以E'为边集,以E中所有边的端点为顶点集的的子图。 例 EuwxyiI GluwxlI 以上两种子图,其实,对应于取子图的两种基本运算。下面是取子图的另两种基本运算: G-V去掉及与Ⅴ'相关联的一切边所得的剩余子图
3 关联矩阵 M(G)与邻接矩阵 A(G) M(G)=[mi,j] , A(G)=[ai,j] , 其中 mi,j = 顶点 vi 与边 ej 的关联次数= 0, 1, 2. ai,j = 连接顶点 vi 与 vj 的边数 。 例。 e e e e e e e M G v v v v 1 2 3 4 5 6 7 1 2 3 4 1 1 0 0 1 0 1 1 1 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 1 2 0 ( ) = v v v v A G v v v v 1 2 3 4 1 2 3 4 0 2 1 1 2 0 1 0 1 1 0 1 1 0 1 1 ( ) = 子图 子图(subgraph) H G V(H) V(G) , E(H) E(G) 。 真子图 H G。 母图(super graph)。 生成子图(spanning subg.) H G 且 V(H) = V(G) 。 生成母图。 基础简单图 (underlying simple g.)。 导出子图(induced subg.)G[V’], (非空 V’ V ) 以 V’为顶点集,以 G 中两端都在 V’上的边全体为边集构成的 G 的子图。 边导出子图 G[E’] 非空 E’ E 以 E’为边集,以 E’中所有边的端点为顶点集的的子图。 例。 以上两种子图,其实,对应于取子图的两种基本运算。下面是取子图的另两种基本运算: G - V’ 去掉 V’及与 V’相关联的一切边所得的剩余子图。 e1 e2 e3 e4 e5 e6 v1 v2 v4 v3 G=(V, E) e7 G[{f, c]} G[{c, d, e}] e a b c d f g h G=(V, E) x w v y u G[{u,w,x,y}] G[{u,w,x}]
台即GVVv G-E’从中去掉E后所得的生成子图 例。G-{b,d,g}, (=GE\b, d, gil G-b, c,d, gi, (≠G[E\{b,c,d,g G-a,e, f, g) (≠G[E\{a,e,f,g} 注意G\E]与G-E虽有相同的边集,但两者不一定相等:后者一定是生成子图,而前者则 不然。 上述四种运算是最基本取子图运算,今后老要遇到,一定要认真掌握好。关于子图的一些定义还有 G+E’往G上加新边集E’所得的(G的母)图 为简单计,今后将 G±{e}简计为G±e {v}简计为 设G1,Gi2cG,称Gi与G2为 不相交的( disjiont)sGi)∩(G2)=② (∴E(G1)∩E(G2)=) 边不相交(edge- disjiont)分E(G1)∩E(G2)= (但这时G1与G2仍可能为相交的)。 并图GUG2,当不相交时可简记为G1+G2 交图G∩G2 习题 141证明:完全图的每个导出子图是完全图:偶图的每个导出子图是偶图 42设G为一完全图,10)的2-划分为(X,Y),则 153在人数>1的人群中,总有二人在该人群中有相同的朋友数。 1.54设V(G)={v,V2,…},则称(dv1),dv2),,d(yy)为G的度序列。证明:非负
4 即 G[V \ V’] G - E’ 从中去掉 E’ 后所得的生成子图 例。G - {b, d, g}, ( = G[E \ {b, d, g}] ) G - {b, c, d, g}, ( G[E \ {b, c, d, g}] ) G - {a, e, f, g}. ( G[E \ {a, e, f, g}] ) 注意 G[E \ E’] 与 G - E’ 虽有相同的边集,但两者不一定相等 : 后者一定是生成子图,而前者则 不然。 上述四种运算是最基本取子图运算,今后老要遇到,一定要认真掌握好。关于子图的一些定义还有: G + E’ 往 G 上加新边集 E’ 所得的(G 的母)图。 为简单计,今后将 G {e} 简计为 G e ; G - {v} 简计为 G - v 。 设 G1, G2 G ,称 G1 与 G2 为 不相交的(disjiont) V(G1) V(G2) = ( E(G1) E(G2) = ) 边不相交 (edge-distjiont) E(G1) E(G2 ) = 。 ( 但这时 G1 与 G2 仍可能为相交的)。 并图 G1G2 , 当不相交时可简记为 G1+G2. 交图 G1G2 . 习题 1.4.1 证明:完全图的每个导出子图是完全图;偶图的每个导出子图是偶图。 1.4.2 设 G 为一 完全图,1 n -1。证明:若 4,且 G 中每个 n 顶点的导出子图均有相同 的边数,则 G K或 Kc 。 顶点的度 顶点 v 的 度 dG(v) = G 中与顶点 v 相关联边数。 (每一环记为 2) 最大、最小度 , 。 ((G) , (G) ) 定理 1.1 (hand shaking lemma) 任一图中, d v v V ( ) = 2 . 系 1.1 任一 图中,度为奇数顶点的个数为偶数。 例。任一多面体中,边数为奇数的外表面的数目为偶数。 证明。作一图,使其顶点对应于多面体的面,并使其中二顶点相邻当且仅当对应的两个面相 邻。...... k-正则图 (k-regular g.) d(v) = k, v V . 习题 1.5.1 证明: 2/ 。 1.5.2 若 k-正则偶图(k > 0)的 2-划分为 (X, Y),则 X = Y。 1.5.3 在人数 >1 的人群中,总有二人在该人群中有相同的朋友数。 1.5.4 设 V(G) = { v v v 1 2 , ,......, },则称 ( d(v1), d(v2), ...... , d(v) ) 为 G 的度序列。证明:非负 3-正则图 0-正则图 1-正则图 2-正则图
整数序列(d,d,dn)为某一图的度序列∑d1是偶数 1.55证明:任一无环图G都包含一偶生成子图H,使得dn(V)≥dkv)/2对所有v∈V成立 1.56设平面上有n个点,其中任二点间的距离≥1,证明:最多有3n对点的 距离=1。 路和连通性 途径(wa|k) 例如(u,x)-途径 W= ueyfvgyhwbvgydxdydx(有限非空序列) uyvywvyxyx(简写法一当不引起混淆时) 起点( origin)u。 终点( terminus)x 内部顶点( internal vertex)y,v,w,x。 注意,中间出现的x也叫内部顶点。) 长兮边数(重复计算)。 节(段, sect i on)。例如W的(y,w)-节=yw b 逆途径),WW(两条途径W与W相衔接 迹(trai)分边各不相同的途径。例如,ywyx。 路(path)顶点各不相同的途径。(可当作一个图或子 图)。例如,ywx。 d(u,v)=u与之间最短路的长 例。(命题)G中存在(u,ⅵ)-途径G中存在(u,)-路。 G中顶点u与v为连通的( connected) G中存在(u,)-路 (G中存在(u,)-途径。) V上的连通性是V上的等价关系,它将V划分为(等 图 价类) 使每个V中的任二顶点u及都连通(即存在(u,v)-路)。称每个 G[V] 为G的一个分支( component);称o(G)为G的分支数。 G为连通图o(G)=1 G中任两点间都有一条路相连。 为非连通图o(G)>1。 记号对任一非空scV,令S=Ⅵs,记(称为边割) [s,S]=G中一端在S中,另一端在S中的一切边的集合。 例。(命题)G连通对任ScV都有[S,S]≠② 例。(命题)简单图G中,δ≥k→G中有长≥k的路。 习题 1.6.1证明:G中长k为的(,v)-途径的数目,就是A中的(1,j元素。 1.6.2证明:对简单图G有, 2/→G连通
5 整数序列 ( d1 ,d 2, ......, d n) 为某一图的度序列 di i n = 1 是偶数。 1.5.5 证明:任一 无环图 G 都包含一 偶生成子图 H,使得 dH(v) dG(v)/2 对所有 v V 成立。 1.5.6* 设平面上有 n 个点,其中任二点间的距离 1,证明:最多有 3n 对点的 距离 = 1 。 路和连通性 途径 (walk) 例如 (u,x)-途径 W = ueyfvgyhwbvgydxdydx (有限非空序列) = uyvywvyxyx (简写法---当不引起混淆时) 起点(origin ) u 。 终点(terminus) x。 内部顶点(internal vertex) y, v, w, x。 (注意,中间出现的 x 也叫内部顶点。) 长 边数(重复计算)。 节(段,section)。 例如 W 的(y, w)-节=yvw 。 W - 1 (逆途径), WW’(两条途径 W 与 W’相衔接)。 迹( trail) 边各不相同的途径。 例如,yvwyx 。 路 (path) 顶点各不相同的途径。(可当作一个图或子 图)。例如, yvwx 。 d(u, v) = u 与 v 之间最短路的长。 例。(命题)G 中存在(u, v)-途径 G 中存在(u, v)-路。 G 中顶点 u 与 v 为连通的(connected) G 中存在(u, v)-路 ( G 中存在(u, v)-途径。) V 上的连通性是 V 上的等价关系,它将 V 划分为(等 价类): V1,......,V 使每个 Vi 中的任二顶点 u 及 v 都连通(即存在(u, v)-路)。 称每个 G[Vi] i=1,2,...... 为 G 的一个分支(component); 称(G)为 G 的分支数。 G 为连通图 (G) = 1 G 中任两点间都有一 条路相连。 G 为非连通图 (G) 1。 记号 对任 一非空 SV ,令 S = V\S, 记(称为边割) [S, S ] = G 中 一 端在 S 中,另一 端在 S 中 的一切边的集合。 例。(命题)G 连通 对任 S V 都有 [S, S ] 例。(命题) 简单图 G 中, k G 中有 长 k 的路。 习题 1.6.1 证明:G 中长 k 为的(vi ,vj )-途径的数目, 就是 A k 中的(I, j)元素。 1.6.2 证明:对简单图 G 有, − 1 2 G 连通。 u v y x w e a b d h c f g 图 G
对于v>1,试给出E= 的不连通简单图 6.3简单图G中,δ>[v2]-1→G连通。当v是偶数时,试给出一个不连通的([v/2]-1) 正则简单图。 .6.4G不连通→G°连通 对任意图G的任一边e,有o(G)≤o(G-e)≤o(G)+1 1.6.6G连通,且d(v)=偶数,Vv∈V→o(G-v)≥d()/2,vv∈V. 1.6.7连通图中,任二最长路必有公共顶点 1.6.8对任一图的任三个顶点u,v,w都有d(u,v)+d(,w)≥du,w) 6.9任一简单图非完全图中,一定有三个顶点u,v,w,使得u,ww∈E而WwgE 闭途径( closed walk)分起点=终点且长>0的途径 闭迹( closed trai1)边各不相同的闭途径。 圈( cycle)分顶点各不相同的闭迹 (可当作一图或子图。) 例。闭途径: uyvyu; uywxywvu; yuyu 闭迹: uy xwyvu 圈 yTvgy"; uywvu。 k-圈(k- cycle)分长为k的圈 例。1-圈(即一条环),2-圈(由重边组成),3-圈(又称 三角形)。 奇圖( odd cycle) 偶圈( even cycle) 定理1.2G为二部图G不含奇圈。 明:→:设G的2-划分为(X,Y),由G的定义,G的任一圈中,X和Y的顶点一定交错出现, 从而其长必为偶数。 :不妨设G为连通的。任取一顶点u,令 X=x∈V丨d(u,x)=偶数} Y=yev|d(u,y)=奇数}。 由于,易见,(X,Y)为V的 划分,只要再证X和Y都是G 的独立集(即X(或Y)中任二 u 顶点v,w都不相邻)即可:令 P与Q分别为最短(u,v)-路与最 短(u,w)-路。设u为P与Q的 最后一个公共顶点:而P与Q分别为P的(u,V)-节与Q的Gu,w)-节。则P与Q只有一公共顶点。 又,由于P与Q的(u,u)-节的长相等,P与Q的长有相同的奇偶性,因此v与w不能相邻,不然, V(P)Qwv 将是一奇圈,矛盾。# 例。(命题)图G中δ≥2→G中含圈。 例。(命题)简单图G,δ≥2→G含长ε≥δ+1的圈。 例。(命题)任一图中 (a)E≥v→含圈。 (b)*.E≥+4→含二条边不重的圈
6 对于 > 1,试给出 = − 1 2 的不连通简单图。 1.6.3 简单图 G 中, > [/2] - 1 G 连通。 当是偶数时,试给出一个不连通的([/2]-1) 正则简单图。 1.6.4 G 不连通 G c 连通。 1.6.5 对任意图 G 的任一边 e,有 (G) (G-e) (G) +1 。 1.6.6 G 连通,且 d(v)=偶数, v V (G-v) d(v)/2, v V. 1.6.7 连通图中,任二最长路必有公共顶点。 1.6.8 对任一图的任三个顶点 u, v, w 都有 d(u, v)+d(v, w) d(u, w)。 1.6.9 任一简单图非完全图中,一定有三个顶点 u, v, w, 使得 uv, vw E 而 uw E。 圈 闭途径(closed walk) 起点=终点且长 0 的途径。 闭迹 (closed trail) 边各不相同的闭途径。 圈(cycle) 顶点各不相同的闭迹。 (可当作一图或子图。) 例。闭途径: uyvyu ; uywxywvu ; uyuyu。 闭迹:uyxwyvu。 圈: yfvgy ; uywvu。 k-圈(k-cycle) 长为 k 的圈。 例。1-圈(即一条环), 2-圈(由重边组成),3-圈(又称 三角形)。 奇圈 (odd cycle)。 偶圈 (even cycle)。 定理 1.2 G 为二部图 G 不含奇圈。 证明::设 G 的 2-划分为(X, Y),由 G 的定义,G 的任一圈中,X 和 Y 的顶点一定交错出现, 从而其长必为偶数。 :不妨设 G 为 连通的。 任取一顶点 u,令 X = { xV d(u, x) = 偶数 }, Y = { yV d(u, y) = 奇数}。 由于,易见,(X, Y)为 V 的 2-划分,只要再证 X 和 Y 都是 G 的独立集( 即 X(或 Y)中任二 顶点 v,w 都不相邻 )即可: 令 P 与 Q 分别为最短(u, v)-路与最 短(u, w)-路。设 u’为 P 与 Q 的 最后一个公共顶点; 而 P’与 Q’分别为 P 的(u’, v)-节与 Q 的(u’, w)-节。则 P’与 Q’只有一公共顶点。 又,由于 P 与 Q 的(u, u’)-节的长相等, P’与 Q’的长有相同的奇偶性,因此 v 与 w 不能相邻,不然, v( P’)-1 Q’wv 将是一 奇圈,矛盾。 例。(命题) 图 G 中 2 G 中含圈。 例。(命题) 简单图 G, 2 G 含长 +1 的圈。 例。(命题) 任一图中 (a). 含圈。 (b)*. + 4 含二条边不重的圈。 u v y x w e a b d h c f g P Q u P’ Q’ u’ v w
习题 1.7.1若边e在G的一闭迹中,则e在G的一圈中。 17.2证明:(a).ε≥ν→G含圈 (b).E≥v+4→G含两个边不重的圈。 最短路问题 赋权图( weighted g)(权≡1之推广) 权( weight)w(e)≥0 H)=∑w(e),H≤G 路P的长=w(P) 顶点u与v距高d(u,v)=最短(u,v)-路的长。 问题求最短(uo,Vo路 转求最短(uo,)-路,vv∈V\{uo 简化只考虑简单图,且w(e)>0e∈E (w(u)=0时,可合并u与v为一顶点) 原理逐步求出顶点序列 使 d(uo,un)≤ Sk=( uo, ur,u ki =VIS P为最短(uo,u)-路 i=1,2, (1)u:u是使w(uau)=min{w(uo)lv≠uo}者 得S1=S0u{u},P1=uou (2).若已求得Sk-1;duo,u1),d(uo,uk);及最短(uo,u)路P1i=1.2,k-1 uk:显然 d(uo,uk)= min( d(uo,V)I VE S-Ii j)+w(uju 某j∈{1,2,k1} min( d( uo, u)+ w(uuk) uE Sk-1i in(d(uo, u)+ w(uv)I min{l(v)|v∈S-1} 其中 min (d(uo, u)+ wuv)I uE Sk-1i (uk)= d(uo, uk)) Sk-IUfukj 某j∈{1,2,k-1} update进行下一步时,只要更新l(v)即可: (v)< minI(v), I(uk)+w( ukv)i vv∈ Dijkstra算法 (1)作为开始:I(uo)←0;l(v)← v≠u0 (2).(这时己有Sk={uo,u,uk}) I(v)< min ((v), I(uk)+w(uv)j 再计算min{(v)},设其最小值点为uk+1,令 Sk+1=SkU{uk+1}
7 习题 1.7.1 若边 e 在 G 的一闭迹中,则 e 在 G 的一圈中。 1.7.2 证明:(a). G 含圈。 (b)* . + 4 G 含两个边不重的圈。 最短路问题 赋权图(weighted g.)(权 1 之推广 ) 权( weight ) w(e) 0. w(H) = w e e E H ( ) ( ) , H G . 路 P 的长 = w(P) 顶点 u 与 v 距离 d(u, v) = 最短(u, v)-路的长。 问题 求最短( u0, v0)-路。 转 求最短(u0, v)-路, v V \ {u0}. 简化 只考虑简单图,且 w(e) > 0 e E. ( w(uv) = 0 时, 可合并 u 与 v 为一 顶点)。 原理 逐步求出顶点序列 u1, u2, ............ 使 d(u 0, u1) d(u 0, u2) ...... 记 S0 = { u0 }, Sk = { u 0, u1,.............,u k} , Sk = V \ S 。 Pi 为最短( u0, ui)-路 i= 1, 2,...... (1).u1 : u1 是使 w(u 0u1) = min{ w(u 0v) v u 0 } 者 . 得 S1 = S0{u1} , P1 = u 0u1 . (2). 若已求得 S k-1 ; d(u 0, u1),.........d(u 0, u k-1) ; 及最短 (u 0, u i)路 Pi i=1.2,...,k-1 . u k :显然, d(u0, u k) = min{ d( u0, v) v Sk−1 } = d(u 0, u j ) + w( u ju k ) 某 j{ 1,2,......,k-1 } = min{ d( uo, u ) + w( uu k ) u S k-1 } = min{d( u 0 , u ) + w(uv ) v Sk−1 , u S k-1 } = min { l( v ) v Sk−1 } 其中, l( v ) = min { d( u o, u ) + w( uv ) u S k-1} ( l( u k ) = d( u 0 , u k ) ) S k = S k-1 { u k } , P k = P j u ju k 某 j{ 1,2,......,k-1 } 。 update 进行下一 步时,只要更新 l( v ) 即可: l( v ) min { l( v ) , l( u k ) + w( u kv ) } v Sk Dijkstra 算法 (1).作为开始:l( u 0 ) 0 ; l( v ) v u 0 ; S0 { u 0 }; k 0 . (2). (这时已有 Sk = { u 0, u1,.............,u k}) l( v ) min { l( v ) , l( u k ) + w( u kv ) } v Sk 再计算 min { l( v ) },设其最小值点为 u k+1 ,令 S k+1 = S k { u k+1 }
(3)若k=V-1,仃止:不然,令k←k+1,并回到(2) L 计算复杂性 6 比较:v(v1)/2×2 凡是复杂性为p(v,E)的算法(p(,)为一多项式)称为“好算法”(“good algorithm”- J. Edmonds)。这是相对于指数型算法而言的:在10-6秒/步运算速度下: 复杂性 008sec 027sec 125sec 24. 3sec 5.2min 17. 9min 12. 7days 35.7years 由上表可见,两种算法有天壤之别。 注1若只关心求d(uo,vo)则算法进行到vo∈Sk时停止。 2.计算过程中,所得子图是一棵树。每步都是往其上增加一条边及一个顶点,因此该过程称为 tree growing procedure 3.若要计录u到每个顶点u的最短路,只要记录下该路中u的前一个顶点即可 习题 1.8.1描述一个算法以确定 (a).一图的各个分支 图的围长(即最短圈的长)。 并说明你的算法好到什么程度 树树 无圈图( acyclic g.;林 forest)。 树(tree)连通无圈图 叶( leave)树中度为1的顶点 定理2.1树中任二顶点间有唯一的路相连 证明:反证,假设存在树G,其中有二顶点u与v,其间有二不同(u,ⅵ)-路P和P2相连。因P1≠ P2,一定存在P的一条边e=xy,它不是P2的边。显然,图P∪P2-e是连通的,从而其中包含 条(x,y)-路P。于是P+e是G中的一圈,这与G为无圈图相矛盾。 注意(1).当G无环时,易见 G是树G中任二顶点间有唯一的路相连 (2).以下结论不一定成立:彐闭途径→彐圈
8 (3). 若 k = - 1 , 仃止;不然,令 k k+1 ,并回到 (2) 。 计算复杂性 加法: (- 1)/2 比较: (- 1)/2 2 v S : (-1)2 +)________________________________________________ 共 O ( 2 ) 凡是复杂性为 p( , ) 的算法 ( p( . , . ) 为一多项式 ) 称为“好算法”( “good algorithm”------J.Edmonds )。这是相对于指数型算法而言的:在 10 - 6 秒/步运算速度下: 复杂性 n= 10 20 30 40 50 n 3 .001sec .008sec .027sec .064sec .125sec n 5 .1sec 3.2sec 24.3sec 1.7min 5.2min 2 n .001sec 1.0sec 17.9min 12.7days 35.7years 由上表可见,两种算法有天壤之别。 注 1.若只关心求 d(u 0 , v 0)则算法进行到 v 0 S k 时停止。 2.计算过程中,所得子图是一 棵树。每步都是往其上增加一条边及一个顶点,因此该过程称为 tree growing procedure 。 3.若要计录 u 0 到每个顶点 u 的最短路,只要记录下该路中 u 的前一 个顶点即可。 习题 1.8.1 描述一个算法以确定 (a). 一图的各个分支; (b). 一图的围长(即最短圈的长)。 并说明你的算法好到什么程度。 树 树 无圈图(acyclic g.;林 forest)。 树(tree) 连通无圈图。 叶 (leave) 树中度为 1 的顶点。 定理 2.1 树中任二顶点间有唯一的路相连。 证明:反证,假设存在树 G,其中有二顶点 u 与 v,其间有二不同(u, v)-路 P1 和 P2 相连。因 P1 P2 ,一定存在 P1 的一条边 e = xy ,它不是 P2 的边。显然,图 P1 P2 - e 是连通的,从而其中包含 一条(x, y)-路 P。于是 P + e 是 G 中的一 圈,这与 G 为无圈图相矛盾。 注意 (1). 当 G 无环时,易见, G 是树 G 中任二顶点间有唯一的路相连。 (2). 以下结论不一 定成立: 闭途径 圈 。 7 2 2 1 3 2 1 7 3 5 3 4 4 4 8 6 6 u0 u0 uj v uk Sk-1 Sk-1 Sk
定理2.2G是树 E=V-1。 证明:对ν进行归纳。当Vv=1时,G=K1,成立。假设定理对小于v个顶点的树成立,而G 为ν个顶点的树。任取G的一边uv。它是G中的一条路,由定理2.1知 G-uv不连通, 且它恰有二分支(习题1.6.5),设为G,与G2。它们都是连通无圈图,因此是树。又,它们的顶点数 都小于v。由归纳假设知 E(G1)=v(G:)-1 =1.2 E(G)=ε(G1)+ε(G2)+1 (G,)+v(G2) (G)-1 推论2.2每棵非平凡树至少有两个度为1的顶点。 明:由于G为非平凡连通图, d(v)≥1 再由定理1.1及2.2知, ∑4(v)=2E=2v-2 由此知推论成立 例。(命题)恰只包含二度为一顶点的树是路 习题 2.1.1证明:非平凡树中,任一最长路的起点和终点均是度为1的顶点。再由此去证明推论2.2。 2.1.2当ε=-1时,证明以下三结论是等价的: (a)G是连通图 (b)G是无圈图 c)G是树。 2.1.3一树中若△≥k,则其中至少有k个度为1的顶点 2.1.4G为林ε=v-0。 2.1.5若林G恰有2k个奇点,则G中存在k条边不重的路P,P2,.P,使得 E(G)=E(P1)UE(P2)∪...∪E(P)。 21.6正整数序列(d,d2,…,d)是一棵树的度序列,当且仅当∑d=2(v-1) 2.1.7饱和烃分子形如CHn,其中碳原子的价键为4,氢原子的价键为1,且任何价键序列都不 构成圈。证明:对每个m,仅当n=2m+2时cH,方能存在 割边和键 e为割边( cut edge)eo(G-e)>o(G) (即o(G-e)=o(G)+1) 定理2.3e为G的割边分e不在G的任一圈中 证明:令e=xy,则x与y在G的同一分支中。于是 e为G的割边 台x与y不Ge在同一分支中 G-e中无(x,y)-路 分G中无含e的圈 定理2.4图G连通,且每边是割边分G为树
9 定理 2.2 G 是树 = - 1。 证明:对 进行归纳。当 = 1 时,G = K 1 ,成立。假设定理对 小于 个顶点的树成立,而 G 为 个顶点的树。任取 G 的一边 uv 。它是 G 中的一条路,由定理 2.1 知, G - uv 不连通, 且 它恰有二分支(习题 1.6.5),设为 G1 与 G2 。它们都是连通无圈图,因此是树。又,它们的顶点数 都小于 。由归纳假设知 (G I ) = (G I )- 1 I= 1,2 . 故, (G) = (G 1 ) + (G 2 ) + 1 = (G 1 ) + (G 2 ) - 1 = (G) - 1 。 推论 2.2 每棵非平凡树至少有两个度为 1 的顶点。 证明:由于 G 为非平凡连通图, d(v) 1 , v V 。 再由定理 1.1 及 2.2 知, d v v V ( ) = 2 = 2 − 2 , 由此知推论成立。 例。(命题)恰只包含二度为一顶点的树是路。 习题 2.1.1 证明:非平凡树中,任一最长路的起点和终点均是度为 1 的顶点。再由此去证明推论 2.2。 2.1.2 当 = - 1 时,证明以下三结论是等价的: (a) G 是连通图; (b) G 是无圈图; (c) G 是树。 2.1.3 一树中若 k,则其中至少有 k 个度为 1 的顶点。 2.1.4 G 为 林 = - 。 2.1.5 若林 G 恰有 2k 个奇点,则 G 中存在 k 条边不重的路 P1 ,P2 ,..,Pk ,使得 E(G) = E(P1 )E(P2 ) ... E(Pk )。 2.1.6 正整数序列(d 1 ,d 2 ,...,d )是一 棵树的度序列,当且仅当 di i= = − 1 2 1 ( ) 。 2.1.7 饱和烃分子形如 C mH n ,其中碳原子的价键为 4,氢原子的价键为 1,且任何价键序列都不 构成圈。证明:对每个 m,仅当 n = 2m + 2 时 C mH n 方能存在。 割边和键 e 为割边( cut edge) (G-e) > (G) 。 (即 (G-e) = (G) + 1 ) 定理 2.3 e 为 G 的割边 e 不在 G 的任一圈中 。 证明:令 e = xy ,则 x 与 y 在 G 的同一分支中。于是, e 为 G 的割边 (G-e) = (G) + 1 x 与 y 不 G-e 在同一分支中 G-e 中无(x,y)-路 G 中无含 e 的圈。 定理 2.4 图 G 连通,且每边是割边 G 为树
证明:注意到以下事实即可, G无圈G中每边不在任一圈中 G中每边是其割边 连通图G的生成树( spanning tree) G的生成子图,且为树 推论2.4.1每一连通图都包含一生成树。 证明:令T为极小( minima)连通生成子图(意指T的任一真子图都不是连通生成子图)(由定 义,T可在保持连通性的前提下,用逐步从G中去边(∴所去的边一定在一圈中(即非割边)(每次 破坏一圈)的办法求出。 由T的定义知,o(T)=1, (T-e) 即T的每边为割边,故由定理2.4知T为树。 注也可用极大无圈(生成)子图(即其真生成母图都含圈)来求生成树T。它可由V上的空图开 始,在保持无圈的前提下,逐步由G中取边的办法求出。(为何是生成树?) 推论2.4.2G→ε≥V-1 定理2.4.5设T为G的一生成树,e为G中不属于T的边,则T+e含唯一的圈。 证明:由于T无圈,T+e中的每个圈都包含e。又 C为T+e的一圈c-e为T中连接e的两个端点的路。 但,由定理2.1知,T中恰只有一条这样的路,因此T+e中包含唯一的圈。 小结G为树 G中任二顶点间有唯一的路相连,且无环 G连通,无圈 心G连通,且每边为割边 ◇G连通,且ε=v- G连通。且ε=v-1。 图G的边铡( edge cut)[s,S G中一端在S另一端在S中的边的子集合 显然,在连通图G中, E’→边割o(G-E”)>1。 键(bond,割集 cut set) 极小非空边割 例。e是G的割边{e}是G的键。 例。左图G中 w luv, zv, zyl [zu, zv, zyl 都是边割,其中后两个为键。而E={zu,zv,zy,uvl 不是G的边割,当然更不是G的键,虽然GE变成不连 通。 易见,当G连通且S≠时 边子集B为G的键B是使G不连通的E的极小子集。 台o(G-B)=2,且中每边的两端点分别在二分支中。 边 割B=[S,S]为键G[s],G[S]都连通。(习题) 设H为G的子图,称子图G-E(H)为G中H的补图,记为
10 证明:注意到以下事实即可, G 无圈 G 中每边不在任一圈中 G 中每边是其割边。 连通图 G 的生成树(spanning tree ) G 的生成子图,且为树。 推论 2.4.1 每一连通图都包含一生成树。 证明:令 T 为极小( minimal)连通生成子图 (意指 T 的任一真子图都不是连通生成子图)(由定 义,T 可在保持连通性的前提下,用逐步从 G 中去边( 所去的边一定在一圈中(即非割边))(每次 破坏一圈)的办法求出。 由 T 的定义知, (T) = 1 , (T - e) = 2 e E(T) 。 即 T 的每边为割边,故由定理 2.4 知 T 为树。 注 也可用极大无圈(生成)子图(即其真生成母图都含圈)来求生成树 T。它可由 V 上的空图开 始,在保持无圈的前提下,逐步由 G 中取边的办法求出。 (为何是生成树?) 推论 2.4.2 G - 1 。 定理 2.4.5 设 T 为 G 的一生成树,e 为 G 中不属于 T 的边,则 T+e 含唯一的圈。 证明: 由于 T 无圈,T + e 中的每个圈都包含 e 。又, C 为 T + e 的一圈 C - e 为 T 中连接 e 的两个端点的路。 但,由定理 2.1 知,T 中恰只有一条这样的路,因此 T + e 中包含唯一的圈。 小结 G 为树 G 中任二顶点间有唯一的路相连,且无环 G 连通,无圈 G 连通,且每边为割边 G 连通,且 = - 1 G 连通。且 = - 1 。 图 G 的边割( edge cut) [S, S ] S V G 中一端在 S 另一端在 S 中的 边的子集合。 显然,在连通图 G 中, E’ 边割 (G-E’) > 1 。 键(bond, 割集 cut set ) 极小非空边割。 例。e 是 G 的割边 {e} 是 G 的键。 例。左图 G 中, {uv, zv, zy, vw, yx}, {zu, zv, zy, xy, xw}, {uv, zv, zy} {zu, zv, zy} 都是边割,其中后两个为键。而 E’ ={zu, zv, zy, uv} 不是 G 的边割,当然更不是 G 的键,虽然 G- E’ 变成不连 通。 易见,当 G 连通且 S 时, 边子集 B 为 G 的键 B 是使 G 不连通的 E 的极小子集。 (G-B)=2,且中每边的两端点分别在二分支中。 边 割 B = [S, S ]为键 G[S],G[ S ]都连通。 (习题) 设 H 为 G 的子图,称子图 G - E(H) 为 G 中 H 的补图,记为: u v w z y x