对于最短路.PPT

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
对于最短路

第二节 最短路问题 最短路问题是重要的最优化问题之一,它不仅可以直接应用于解决生产实际的许多问题,如管道铺设、线路选择,设备更新、投资等问题,而且经常被作为一个基本工具,用于解决其它的优化问题。 §2.1 基本概念与基本定理 在有向图G中,设P是有向图 D=(V,E)中从顶点u到v为点弧交替的序列。如果序列中每一条弧的始点和终点恰好分别是与它前后相邻的顶点,则称这个序列P是D中的一条路。 设已给定了一个有向赋权图D=(V,A,w);wij≥0,((u,v)∈A),若u是D中的一条路,则称w(u)=∑wij为路u的总权数(或称为路长)。 设u,v是D=(V,A,w)中取定的两个点,存在从u到v的路,称从u到v的路中总权数最小者为最短路。 对于最短路,显然有下列定理成立. 定理6.2.1 有向图D=(V,A,w),V={1,2,..,n},记 dj为点1到点j的最短路的路长且不妨设当1<i<j时有0<di<dj<∞,则有d1=0及dj=min{di+wij}(j=1,2,…,n),其中wij为点i到点j的弧的权数。 §2.2 最短路的算法 1.Dijkstra算法(适用于所有权非负的情况) Dijkstra算法是E.W. Dijkstra于1959年提出的,是目前公认的对所有权非负的情况的最好算法。 设D=(V,A,w)满足上述定理条件,则有以下算法: ① 令u1=0,uj﹦wij(若不存在点1到点j的路则记w1j=∞),p={1},T={2,3,…,n}(p为以确定的点之集,T为未确定的点之集); ②(指出永久标号)在T中找出一点k使得uk={uj}。令p:=p∪{k},T=T\{k},若T=空集算法结束,并令di=ui(I=1,2,…n),否则进入(3); ③(修改临时标号)对T中每一个点j,令uj=min{uj,uk+wij},然后返回②。 例6.2.1求图6-2-1中点v1到其它各点的最短路(弧旁的数字表示距离)。 解 用Dijkstra算法,这里只画出每步所得图得标号的变化情况,即图6-2-2,小方框内数字即为各顶点到v1的最短路。写出计算结果,具体步骤请读者自己完成。 2.最短路的矩阵算法 (适用于所有权非负的情况) 最短路的矩阵算法是将图表示成是矩阵形式,然后利用矩阵表计算出最短路。矩阵算法的原理与Dijkstra算法标号算法完全相同,只是它采用了矩阵形式,显得更为简洁,有利于计算机计算。 下面先介绍图的矩阵表示。 (1) 图的矩阵表示 无权图矩阵表示:两顶点之间有边相连的记为“1”,无边相连的记为“0”,对角线上记为“0”。赋权无向图矩阵表示:两顶点之间有边相连的,写上它们的权数,无边相连的记为“∞”,对角线上记为0。 赋权有向图的矩阵表示:左边第一列为各条弧的起点。在每一行中,以该点为起点,按弧的方向,依次填上到各点的权,若没有到该点的弧,则权数为“∞”。 (2)最短路的矩阵算法 最短路的矩阵算法步骤如下: ①??将图表示成矩阵形式。 ②?确定起点行,将其标号确定为0,将相应的列在矩阵表中划去。 ③ 在已标号的行中未划去的元素中,找出最小元素aij ,把它圈起来,此时把第j列划去,同时给第j行标号aij ,并把第j行中未划去的各元素都加上aij 。这标号的含义同标号算法。 若还存在某些行未标号,则返回③。如果各行均已获得标号(或终点行已获得标号),则终止计算。并利用倒向追踪,求得自起点到各点的最短通路。 3. Ford算法 (适用于含负权弧的情况) 设D=(V,A,w)为有负权弧的有向图,不妨设图D中任两点从vi 到vj均有弧联结(若没有可认为(vi,vj)存在且wij=+∞)且设D中只有n(n为常数)个点。 则d(j)可由以下迭代关系 d(1)(j)=w1j (j=1,2,…,n)与 d(k)(j)={d(i)+wij} (k=2,3,…)求出。 若迭代到某一步k时,有 d(k)(j)=d(k-1)(j) (j=1,2,3,…n) 则运算结束,且 d(j)=d(k)(j) (j=1,2,3,…n) * 第二节 最短路问题 §2.1 基本概念与基本定理 §2.2 最短路的算法

您可能关注的文档

文档评论(0)

youbika + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档