带权图的最短路径课件.pptVIP

  • 53
  • 0
  • 约1.39万字
  • 约 38页
  • 2018-08-06 发布于贵州
  • 举报
带权图的最短路径课件

定义1 设 G = (V, E)是简单图,若对于每一个e∈E,均有一正实数W(e)与之对应,则称W是G的权函数,并称G为带权图,记为 G = (V, E, W)。 我们研究带权图,一个重要的内容就是寻找某类具有最小(最大)权的子图,其中之一就是最短路问题,例如:给定一个连接各城市的铁路网络(连通的带权图),在这个网络中的两个指定的城市之间确定一条最短路。 定义2 设G = (V, E, W)是带权图,μ=(ei1,ei2,……eik)是G中的一条路,μ的路长为W(μ)=∑W(ei)。从u到v的最短路P是指满足下列条件的路 W(P) = min{W(μ)|μ为从u到v的路} 由上述定义可以看到,如果每条边的权函数值为1,则带权图的路长与一般图的路长是一致的。 ;求最短路长的算法是E.W.Dijkstra于1959年提出来的,这是至 今公认的求最短路长的最好算法,我们称它为Dijkstra算法。 Dijkstra算法 功能:在连通的带权图中,求从v0到v的最短路的路长。 No1. p0 = v0;P = {v0};T = V\{v0}; d(p0) = 0; ( ?t∈T)(d(t) = ∞); No2. ( ?t∈T)(d(t) = min(d(t),d(p0)+W(p0,t)); No3. 在T中选取t0, 使( ?t∈T)(d(t0)≤d(t)); No4. p0 = t0 ;P = P?{t0};T = T\{t0}; No5. if p0 ≠ v then goto No2 else end。 ;?例1.? 求图1中从v0到v5的最短路径. 1. p0 = v0, P = {v0}, T = {v1,v2,v3,v4,v5} d(p0) = 0, d(v1) = d(v2) = d(v3) = d(v4) = d(v5) = ∞. 2. d(v1) = 1, d(v2) = 4, d(v3) = d(v4) = d(v5) = ∞. 3. t0 = v1 4. p0= t0 = v1, P = {v0,v1}, T = {v2, v3,v4,v5}. 5. p0≠v5 , GoTo 2. 2. d(v2) = 3, d(v3) = 8, d(v4) = 6, d(v5) = ∞. 3. t0 = v2 4. p0= t0 = v2, P = {v0,v1,v2}, T = {v3,v4,v5} 5. p0≠v5 , GoTo 2. ; 2. d(v3) = 8, d(v4) = 4, d(v5) = ∞. 3. t0 = v4. 4. p0 = t0 = v4, P = {v0,v1,v2, v4}, T = {v3, v5}. 5. p0≠v5, GoTo 2. 2. d(v3) = 7, d(v5) = 10. 3. t0 = v3 4. p0 = t0 = v3, P = {v0, v1, v2, v3, v4}, T = {v5} 5. p0 ≠ v5, GoTo 2. 2. d(v5) = 9. 3. t0 = v5. 4. p0 = t0 = v5, P = {v0,v1,v2,v3,v4,v5}, T = { }. 5. p0 = v5 . ; Dijkstra算法的基本思想是:将图 G 中结点集合 V 分成两部分,一部分称为具有 P 标号的集合,另一部分称为具有 T 标号的集合。所谓结点a的 P标号是指从 v0 到a的最短路的路长,而结点b的T标号是指从 v0 到b的某条路径的长度。Dijkstra算法中首先将 v0 取为 P 标号结点,其余的点均为 T 标号结点,然后逐步地将具有 T 标号的结点改为 P 标号结点,当结点 v 也被改为 P 标号时,就找到了从 v0 到v 的最短路径的长度。 ;§6 Euler图;定理1 设 G = (V,E) 是无向连通图,那么,G是Euler图当且仅当G中每个结点都是偶结点。 例1 图G如图所示,问图G是否为Euler图,若是,求 出其Euler圈。 由于G中的六个结点均为偶结点 且G连通,根据Euler定理可知,G 为Euler图,仿照定理证明的办法, 可得到G中的Eule

文档评论(0)

1亿VIP精品文档

相关文档