1 / 39

第 五 章 图 论 ( 第二部分 )

第 五 章 图 论 ( 第二部分 ). 1. 通路 2. 图的 连通性 3. 赋权图的最短通路. 赋权图与边的权. [ 定义 ] 权 在图的点或者边上标明的信息 ( 数量 ) 称为 权。 边 e 的权记为 W(e) ; 如果用两个端点的序列 (u, v) 表示边,则边 (u,v) 的权记为 W(u,v) 。 规定: (1) W(uu) = 0 , 若 (u, u)  E(G), (2) W(uv) = ∞, 若 (u, v)  E(G) 。 [ 定义 ] 赋权图

sera
Download Presentation

第 五 章 图 论 ( 第二部分 )

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. 第 五 章 图 论 (第二部分) 1. 通路 2. 图的连通性 3. 赋权图的最短通路

  2. 赋权图与边的权 [定义]权 在图的点或者边上标明的信息(数量)称为权。 • 边e的权记为W(e); 如果用两个端点的序列(u, v)表示边,则边(u,v)的权记为W(u,v) 。 • 规定: (1) W(uu) = 0, 若(u, u)  E(G), (2) W(uv) = ∞, 若(u, v)  E(G)。 [定义]赋权图 顶点或边含有权的图称为赋权图。赋权图可以是有向图或者无向图。

  3. b a 5 4 8 12 20 d c 例: 赋权图边权值例 W(a,b)=5, W(a,a)=0, W(b,d)=∞, W(a,d)=8

  4. 最短通路 [定义]最短通路 • 在一个边赋权的图G中,从u到v的所有通路中,边权值和最小的通路,称为u到v的最短通路(最短路径),最短通路的边权和称为u到v的距离。 • 两点间的最短通路必为基本通路。

  5. 20 5 15 2 2 8 4 1 7 6 最短通路例 B C A F D E

  6. b a 5 4 8 12 20 d c 枚举法求最短通路 求a到c的最短通路 a到c的基本通路有: • (a, b, c)边权和为5+4=9; • (a, c)边权和为12; • (a, d, c)边权和为8+20= 28。 最短路为: abc,因此a到c的距离为9

  7. 狄克斯特洛(Dijkstra)算法 • 求图G=(V,E)中从结点a到结点z的最短通路。 • 基本思想-动态规划法 (1)求出以a为起点,V-{a}中的点为终点的最小最短通路P1;设P1终点为t1; 若t1 = z,则P1为a到z的最短通路; 否则,执行(2) (2) 求出以a为起点, V-{a,t1}中的点为终点的最小最短通路P2;设P2终点为t2; 若t2 = z,则P2为a到z的最短通路; 否则,执行(3) (3) 求出以a为起点,V-{a,t1,t2}中的点为终点的最小最短通路P3;设P3终点为t3; 若t3= z,则P3为a到z的最短通路; 否则,执行(4) (4) 依此类推,直到求得的第k条最短通路Pk;终点为z。

  8. 9 1 1 6 2 g b a d e c f z 4 4 3 4 5 3 3 7 狄克斯特洛算法:相关定义 T 设G=(V, E),求G中a到z的最短通路。 [定义]目标集 目标集T是满足以下条件的集合: (1) T  V (2) z  T, z是最短通路的终点 (3) a  T, a是最短通路的起点 [定义]指标 设t1 T,由a到t1但不通过目标集T中其它顶点的所有通路中,各边的权之和的最小者,称为t1关于目标集T的指标,记作DT(t1). G 设T={c, e, f, g, z}, 求DT(c). a到c但不通过目标集T中其它顶点的所有基本通路: (a, b, c): 各边权之和: 1+2 =3 (a, c): 各边权之和: 4 (a, d, c): 各边权之和: 4+3 = 7 ∴ DT(c) = 3

  9. 9 1 1 6 2 b a d c z f g e 4 4 3 4 5 3 3 7 T 狄克斯特洛算法:原理 [原理]: 设目标集T = {t1, t2, ……, tn}, 其中t1为T中指标最小的点,即: DT(t1) =min{DT(t1), DT(t2) , ……, DT(tn)} (1) 始点a到t1的最短通路的边权和就是DT(t1) (2) 对任意2 in, a到t1的最短通路a到ti的最短通路 设T = {e, f, g, z}, 已求得 DT( e ) = 9; DT( f ) = 6; DT( g ) = 8; DT( z ) = ∞; 在T的所有结点中,a到f的最短通路最小 并且a到f的最短通路的边权值和为DT(f)=6。 G

  10. 狄克斯特洛算法:原理证明(1) • 证明: (1) (反证法) 假设a到t1的最短通路的权和不是DT(t1). 已知DT(t1)是从a到t1但不通过T中其它顶点的通路中权和最小者,所以如果存在另一条权和小于DT(t1)的新通路,则该通路一定至少通过T中一个其它顶点。

  11. 狄克斯特洛算法:原理证明(2) T • 证明(续): 设新通路的边权和为dnew,则 dnew < DT(t1) 设t2是新通路上经过T中的第一个顶点,则: dnew= DT(t2) + W(t2t1) >DT(t1) 其中w(t2t1) 表示新通路中t2到t1的各边权之和。 这与“dnew < DT(t1)”矛盾。 ∴ a到t1的最短通路的权和只能是DT(t1). t2 t1 a

  12. 狄克斯特洛算法:原理证明(2) T • 证明(续): (2) (反证法)假设存在ti(i2) ,使得a到ti的最短通路小于a到t1的最短通路。设该通路为P,边权值和为d。则d<DT(t1)且d<DT(ti)。 已知DT(ti)是从a到ti但不通过T中其它顶点的通路中权和最小者,则P一定至少通过T中一个其它顶点。设t2是P经过T中的第一个顶点,则: d= DT(t2) + W(t2ti) >DT(t1) 其中w(t2t1) 表示P中t2到ti的各边权之和。 这与“d< DT(t1)”矛盾。 ∴ (2)得证。 t2 ti a

  13. 狄克斯特洛算法 • 求图G=(V, E)中a到z的最短通路。 步骤: (1)令初始目标集T1=V-{a}。求T1中指标最小的结点,设为t1。 若t1=z,则DT1(t1)为a到z的最短通路边权和。 否则,执行(2) (2)令T2=T1-{t1},求T2中指标最小的结点,设为t2。 若t2=z,则DT2(t2)为a到z最短通路边权和。 否则,执行(3) (3) 依此类推,直到求得某个目标集Tk,使得z为Tk中指标最小的结 点,则DTk(z)为a到z的最短通路的边权和。 关键:求结点关于目标集Ti的指标。

  14. t1 t2 a … … tm-1 采用“递推”的方法求目标集中的指标 已知当前目标集为Tm={tm, tm+1, …, tn},且 DTm(ti)是ti关于目标集T的指标,tm是最小指标点。 要求新的目标集Tm+1= Tm-{tm}中任意点ti的指标 可用下公式求得: Tm tm Tm+1 tm • 注: • 当tm与ti不邻接时,W(tm,ti)=∞ tm+1 … tn

  15. 狄克斯特洛算法:执行步骤 求图G=(V, E)中a到z的最短通路。 [算法]执行步骤: (1) 将目标集设置为:T = V – {a} (2) 对任意vT,令DT(v)=W(a,v); (3)将T中指标值最小的点t从T中剔除,即令T=T-{t}; 。 (4) 若t = z,则DT(z)为a到z的最短路径权值,算法结束。 否则(即t ≠ z) ,执行以下操作: 对所有v T,令DT(v)=min(DT(v), DT(t)+W(t,v)); 重复(3). • 算法执行结束后,DT(z)就是从a到z的最短通路的权和。

  16. 狄克斯特洛算法求最短通路举例 例:求下图中从始点a到终点z的最短通路。

  17. 首先,取初始目标集T1={b,c,d,e,f,g,z}。 易见: DT1(b) = 1 (通路:ab) DT1(c) = 4 (通路:ac) DT1(d) = 4 (通路:ad) DT1(e) = DT1(f) = DT1(g) = DT1(z)=∞ (无通路) 比较各点的指标可知,b是最小的指标点,b的指标对应的通路为ab。 T1

  18. DT1(b) = 1 (通路:ab) DT1(c) = 4 (通路:ac) DT1(d) = 4 (通路:ad) DT1(e) = DT1(f) = DT1(g) = DT1(z)=∞ (无通路) 通路:abc 通路:ad 通路:abe 通路:无 通路:无 通路:无 a到c的最短通路为:abc,边权和为DT2(c)=3 T2 c是指标最小的点。

  19. 通路:ad T3 通路:abce 通路:abcf 通路:abcg 通路:无 比较T3中各点指标可知:d的指标最小,故DT3(d)=4是a到d的最短路径长度,ad是a到d的最短路径

  20. 令 T4=T3-{d}={e, f, g, z} T4中各结点的指标为: T4 通路:abce 通路:abcf 通路:abcg 通路:无 比较T4中各点指标可知:f的指标最小,故DT4(f)=6是a到f的最短路径长度,abcf是a到f的最短路径。

  21. 令 T5=T4-{f}={e, g, z} T5中各结点的指标为: 通路:abcfe T5 通路:abcg 通路:abcg 比较T4中各点指标可知:e和g的指标相同,且最小,故可选其中一个,DT5(e)=8是a到e的最短路径长度,abcfe是a到e的最短路径。

  22. 令 T6=T5-{e}={g, z} T6中各结点的指标为: 通路:abcg T6 通路:abcfez 比较T6中各点指标可知:f的指标最小,故DT6(g)=6是a到g的最短路径长度,abcg是a到g的最短路径。

  23. 令 T7=T6-{g}={z} T7中各结点的指标为: 通路:abcfez 故a到z的最短通路边权和为DT7(z)=9, 通路为abcfez T7

  24. 求最短通路的表格表示法 步骤: (1) 先把T1=V – {a}中各点写在第一行上,把各点的指标写在第二行上 然后圈出其中最小指标点。 T1 ① 1

  25. T1 (2) 在第三行上,相应地写上T2=T1-{b}中各点的指 标。在求T2中点t的指标时,利用公式 求出T2中各点的指标后,圈出最小指标点。 T1 ③ 3 T2

  26. 在第四行上,相应地写上T3=T2-{ c }中各点的指标。 利用公式: 求出T3的指标以后,圈出其中最小指标的点。 T1 T2 T3 ④ 4

  27. T1 T2 T3 T4 T5 T6 T7 采用同样的方法,可得完整的表格如下:

  28. 逆向检查法,找最短通路

  29. T1 T2 T3 T4 T5 T6 T7 e→z f→e→z c→f→e→z b→c→f→e→z 所以最短通路为:a→b→c→f→e→z

  30. 3 例:采用表格表示法求下图中a点到z点的最短路径

  31. 3 表格求解步骤(1) ① T1 1 5 6 ∞ ∞ ∞ ∞ ∞

  32. 3 表格求解步骤(2) T1 ④ 4 6 9 ∞ ∞ ∞ ∞ T2

  33. 3 表格求解步骤(3) T1 T2 8 7 T3 ⑥ 6 9 ∞ ∞

  34. 3 表格求解步骤(4) T2 T3 ⑦ 11 ∞ 8 7 T4 9

  35. 3 表格求解步骤(5) T3 T4 ⑧ 8 9 13 T5 9

  36. 求解过程表格表示如下: T1 T2 T3 T4 T5 T6 T7 T8 用逆向检查法,可得最短通路为: a→b→c→g→h→z

  37. f e 2 1 5 7 1 2 3 a 8 7 d g u0 3 4 3 4 2 6 4 6 b c 课堂练习 • 求u0到c的最短路径

  38. S T a b c d e f g 1 u0 abcdefg 8 4 ∞ ∞ 2 ① 7 2 u0 f abcdeg 8 4 ∞ 4 ② 7 3 u0 fe abcdg 8 4 ∞ ③ 7 4 u0 fed abcg 8 ④ 9 6 5 u0 fedb acg ⑥ 9 6 6 u0 fedba cg 9 ⑥ 7 u0 fedbag c ⑨ 8 u0 fedbagc Dijkstra算法执行过程 • 路径:u0,e,d,c

  39. 作业 • P203:3、5

More Related