图论4最短路问题课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《图论4最短路问题课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图论 短路 问题 课件
- 资源描述:
-
1、1返回 结束7.4 最短路问题v一、问题的提出一、问题的提出 )(G赋权图(网络):赋权图(网络): G=(V, E) 中,给每条边中,给每条边 a= 赋予一个非负实数权赋予一个非负实数权 wij ,得到一个有向,得到一个有向网络网络2返回 结束7.4 最短路问题v路径非带权图的路径长度是指此路径上边的条数。非带权图的路径长度是指此路径上边的条数。带权图的路径长度是指路径上各边的权之和带权图的路径长度是指路径上各边的权之和距离矩阵距离矩阵 对上述网络,定义对上述网络,定义 D=(dij)n n,n=|V| wij 当当 E dij = 其它其它带权路径长度带权路径长度 对上述网络,路径对上述网
2、络,路径 v1, v2 , ,vk 的带权的带权路径长度定义为路径长度定义为1,11ki iidw3返回 结束7.4 最短路问题最短路问题在实际工作中应用最短路问题在实际工作中应用1、通讯网络中最可靠问题、通讯网络中最可靠问题2、最大容量问题、最大容量问题3、统筹方法中求关键路线、统筹方法中求关键路线4、背包问题、背包问题5、选址问题、选址问题6、工件加工顺序问题、工件加工顺序问题7、中国邮递员问题、中国邮递员问题背包问题背包问题(Knapsack problem)是一种组合优化的NP完全问题。问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得
3、物品的总价格最高。问题的名称来源于如何选择最合适的物品放置于给定背包中。4返回 结束7.4 最短路问题v例一位旅客要从一位旅客要从A城到城到B城城1.他希望选择一条途中中转次数最少的路线;他希望选择一条途中中转次数最少的路线;2.他希望选择一条途中所花时间最短的路线;他希望选择一条途中所花时间最短的路线;3.他希望选择一条途中费用最小的路线;他希望选择一条途中费用最小的路线;v5v4v3v2v1v0 100 6030101020 5 50这些问题均是带权图上的最短路径问题。这些问题均是带权图上的最短路径问题。1. 边上的权表示一站边上的权表示一站2. 边上的权代表距离边上的权代表距离3. 边的
4、权代表费用边的权代表费用 5返回 结束7.4 最短路问题vDijkstra算法vFloyd算法vFloyd-Warshall算法6返回 结束7.4 最短路问题vDijkstra算法算法 Dijkstra算法是由荷兰计算机科学家算法是由荷兰计算机科学家狄克斯特拉狄克斯特拉(Dijkstra)于)于1959 年提出的,因此又叫狄克斯特拉算法。年提出的,因此又叫狄克斯特拉算法。是从一个顶点到其余各顶点的最短路径算法,解决的是有向是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题。图中最短路径问题。 荷兰计算机科学教授荷兰计算机科学教授Edsger W.Dijkstra(1930-)
5、 在在1972年年获得美国计算机协会授予的图灵奖,这是计算机科学中最具获得美国计算机协会授予的图灵奖,这是计算机科学中最具声望的奖项之一。声望的奖项之一。 Dijkstra算法是求出一个连通加权简单图中从结点算法是求出一个连通加权简单图中从结点a到结到结点点z的最短路。边的最短路。边(i,j)的权的权(i,j)0,且结点,且结点x的标号为的标号为L(x)。结束时,结束时,L(z)是从是从a到到z的最短长度。的最短长度。 举例来说,如果图中的顶点表示城市,而边上的举例来说,如果图中的顶点表示城市,而边上的权重权重表表示城市间开车行经的距离。示城市间开车行经的距离。 Dijkstra算法可以用来找
6、到两个算法可以用来找到两个城市之间的最短路径。城市之间的最短路径。 7返回 结束7.4 .1 Dijkstra算法Dijkstra算法基本思想:把图中所有结点分为两组,每一个结点对应一个距离值。v第一组:包括已确定最短路径的结点,结点对应的距离值是由v0到此结点的最短路径长度; v第二组:包括尚未确定最短路径的结点,结点对应的距离值是v0经由第一组结点(中间结点)至此结点的最短路径长度。 按最短路径长度递增的顺序把第二组的结点加到第一组中去,直至v0可达的所有结点都包含于第一组。在这个过程中,总保持从v0到第一组各结点的最短路径长度都不大于从v0至第二组任何结点的路径长度。8返回 结束 7.4
7、 .1 Dijkstra算法设源点为v0v初始时v0进入第一组,v0的距离值为0;第二组包含其它所有结点,这些结点对应的距离值这样确定(设vi为第二组中的结点) v然后每次从第二组的结点中选一个其距离值为最小的结点vm加到第一组中。每往第一组加入一个结点vm,就要对第二组的各结点的距离值作一次修正(设vi为第二组的结点):v若加进vm做中间结点使得v0至vi的路径长度更短(即vi的距离值vm的距离值+Wmi),则要修改vi的距离(vi的距离值vm的距离值+Wmi)。修改后再选距离值最小的一个结点加入到第一组中,。 如此进行下去,直至第一组囊括图的所有结点或再无可加入第一组的结点存在。显然,这种
8、从第二组的结点中选距离值最小的结点扩展是一种贪心策略。EvvEvvwdistiiii),(),(0009返回 结束7.4 .1 Dijkstra算法procedure Dijkstra(G:所有权都为正数的加权连通简单图)G带有顶点av0,v1,vnz和权(vi,vj),若(vi,vj)不是G的边,则(vi,vj)for i:1 to nL(vi)L(a):0S: (初始化标记,a的标记为0,其余结点标记为,S是空集while z S beginu:不属于S的L(u)最小的一个顶点S:Su for 所有不属于S的顶点v if L(u)(u,v)L(v) then L(v):L(u)(u,v)
9、这样就给S中添加带最小标记的顶点并且更新不在S中的顶点的标记 endL(z)从a到z的最短长度 dij10返回 结束7.4 .1 Dijkstra算法v下面给出该算法的框图:下面给出该算法的框图:2( , )()f p qp通过框图,容易计算该算法计算量通过框图,容易计算该算法计算量 。11返回 结束7.4 .1 Dijkstra算法下面通过一个实例来说明Dijkstra算法是如何工作的。12返回 结束7.4 .1 Dijkstra算法13返回 结束7.4 .1 Dijkstra算法v 0次迭代 L(a)0L(b)L(c)L(d)L(e)L(z)S1次迭代ua,SaL(a)(a,b)044L(
10、b)L(a)(a,c)022L(c)L(a)(a,d)0L(a)(a,e)0L(a)(a,z)0L(b)4,L(c)2,L(d)L(e)L(z)2次迭代uc,Sa,cL(c)(c,b)213L(b)L(c)(c,d)2810L(d)L(c)(c,e)21012L(e)L(c)(c,z)2L(b)3,L(d)10,L(e)12,L(z)3次迭代ub,Sa,c,bL(b)(b,d)358L(d)L(b)(b,e)3145623108abcdez用Dijkstra算法求a和z之间最短路所用的步骤。 L(b)(b,z)3L(d)8,L(e)12,L(z)4次迭代ud,Sa,c,b,dL(d)(d,e)
11、8210L(e)L(d)(d,z)8614L(z)L(e)10,L(z)145次迭代ue,Sa,c,b,d,eL(e)(e,z)10313L(z)L(z)13结 束uz,Sa,c,b,d,e,z从a到z的最短路的长度为13。14返回 结束7.4 .1 Dijkstra算法vDijkstra算法算法( (另外一种说明另外一种说明) ) 求有向网络求有向网络 G=(V, A) 中结点中结点v1 到其它结点的最短距离。到其它结点的最短距离。 设设D为为G的距离矩阵,的距离矩阵,n=|V|,向量,向量U=(u1, u2, , un)的的ui 标记结点标记结点v1到到vi 的距离。的距离。 S为已取得最
展开阅读全文