下载此文档

第8章图第8讲-最短路径和Dijkstra算法.ppt


文档分类:IT计算机 | 页数:约21页 举报非法文档有奖
1/21
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/21 下载此文档
文档列表 文档介绍
第8章图第8讲-最短路径和Dijkstra算法.ppt考虑带权有向图,把一条路径(仅仅考虑简单路径)上所经边的权值之和定义为该路径的路径长度或称带权路径长度。
路径的概念
从源点到终点可能不止一条路径,把路径长度最短的那条路径称为最短路径。
最短路径
v
v1
v2
u
c1
c2
c3

cm
路径长度=c1 + c2 + …+ cm
路径:(v,v1,v2,…,u)
1/21
问题描述:给定一个带权有向图G与源点v,求从v到G中其他顶点的最短路径,并限定各边上的权值大于或等于0。
从一个顶点到其余各顶点的最短路径
单源最短路径问题:Dijkstra算法
2/21
设G=(V,E)是一个带权有向图, 把图中顶点集合V分成两组:
狄克斯特拉(Dijkstra)求解思路
S
v
U=V-S
u
第1组为已求出最短路径的顶点集合(用S表示,初始时S中只有一个源点,以后每求得一条最短路径v,…,u,就将u加入到集合S中,直到全部顶点都加入到S中,算法就结束了)。
第2组为其余未求出最短路径的顶点集合(用U表示)。
3/21
每一步求出v到U中一个顶点u的最短路径,并将u移动到S中。直到U为空。
(1)初始化:,S只包含源点即S={v},v的最短路径为0。U包含除v外的其他顶点,U中顶点i距离为边上的权值(若v与i有边<v,i>)或∞(若i不是v的出边邻接点)。
狄克斯特拉算法的过程
S
v
U=V-S
i
v与U中顶点i的边
4/21
(2)从U中选取一个距离v最小的顶点u,把u加入S中(该选定的距离就是v  u的最短路径长度)。
S
v
U=V-S
u
v与U中顶点u的边最小
5/21
(3)以u为新考虑的中间点,修改U中各顶点j的最短路径长度:若从源点v到顶点j(j∈U)的最短路径长度(经过顶点u)比原来最短路径长度(不经过顶点u)短,则修改顶点j的最短路径长度。
S
v
U=V-S
u
j
两条路径进行比较:
若经过u的最短路径长度更短,则修正
6/21
顶点v  j的最短路径长度=MIN(cvk+wkj,cvj)
S
v
U=V-S
u
j
u
v
j
...
cvu
……
cvj
边wuj
v  j的路径:
不经过顶点u
经过顶点u
修改方式
7/21
(4)重复步骤(2)和(3)直到所有顶点都包含在S中。
v
j
考虑中间其他所有顶点k,通过比较得到v  j的最短路径
k
8/21
如何存放最短路径长度:
用一维数组dist[j]存储!
源点v默认, dist[j]表示源点顶点j的最短路径长度。如dist[2]=12表示源点顶点2的最短路径长度为12。
如何存放最短路径:
从源点到其他顶点的最短路径有n-1条,一条最短路径用一个一维数组表示,如从顶点0  5的最短路径为0、2、3、5,表示为
path[5]={0,2,3,5}。
所有n-1条最短路径可以用二维数组path[][]存储。
?
算法设计(解决2个问题)
9/21
改进的方法是采用一维数组path来保存:
若从源点v  j的最短路径如下:

一定是从源点v  u的最短路径
?
v
u
j

a

a
v
u


v
u
j

a

b
反证法证明:
而通过b的路径更短,则v →… a →… u → j不是最短路径
是v  u的最短路径
与假设矛盾,问题得到证明。
v  j最短路径中j的前一个顶点
10

第8章图第8讲-最短路径和Dijkstra算法 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数21
  • 收藏数0 收藏
  • 顶次数0
  • 上传人ttteee8
  • 文件大小175 KB
  • 时间2018-10-11
最近更新