数据结构与算法课件11最短路径_第1页
数据结构与算法课件11最短路径_第2页
数据结构与算法课件11最短路径_第3页
数据结构与算法课件11最短路径_第4页
数据结构与算法课件11最短路径_第5页
全文预览已结束

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

最短路径

(ShortestPath)最短路径问题如果从图中某一顶点(称为源点)到达另一顶点(称为终点)的路径可能不止一条,如何找到一条路径使得沿此路径上各边上的权值总和达到最小。问题解法边上权值非负情形的单源最短路径问题

—Dijkstra算法所有顶点之间的最短路径

—Floyd算法从某源点到其余顶点之间的最短路径问题的提法:给定一个带权有向图D与源点v,求从v到D中其它顶点的最短路径。限定各边上的权值大于或等于0为求得这些最短路径,Dijkstra提出按路径长度的递增次序,逐步产生最短路径的算法。首先求出长度最短的一条最短路径,再参照它求出长度次短的一条最短路径,依次类推,直到从顶点v到其它各顶点的最短路径全部求出为止采用邻接矩阵作为图的存储表示举例说明510601020100v3v5v0v4v2v13050带权有向图从v0到其余各项点的最短路径:v0→

v1

:无路径 v0→

v2

:10v0→

v3

:50(经v4) v0→

v4

:30v0→

v5

:60(经v4、v3)

∞∞10∞30100∞∞5∞∞∞∞∞∞50∞∞∞∞∞∞∞10∞∞∞20∞60∞∞∞∞∞∞Gn.arcs=邻接矩阵引入辅助数组dist它的每一个分量dist[i]表示当前找到的从源点v0到终点vi

的最短路径的长度。初始状态:若从源点v0到顶点vi有边,则dist[i]为该边上的权值;若从源点v0到顶点vi

没有边,则dist[i]为+

。引入辅助数组S它的每一个分量S[i]记录顶点vi是否已找到最短路径。若从源点v0到顶点vi已找到最短路径,则S[i]置为1;若从源点v0到顶点vi未找到最短路径,则S[i]置为0。初始状态:S[0]=1;S[1]~S[n-1]=0;一般情况下,假设S

是已求得的最短路径的终点的集合,则可证明:

下一条最短路径必然是从v0出发,中间只经过S中的顶点便可到达的那些顶点vx(vx

V-S)的路径中的一条。引入辅助数组path

path[i]表示当前找到的从源点v0到终点vi

的最短路径上vi的前驱顶点,若从v0

到vi

无路径,则path[i]置为-1。每次求得一条最短路径之后,其终点vk

加入集合S,然后对所有的vi

V-S,修改其dist[i]和path[i]的值。

初始化

S←{v0};dist[j]←Gn.arcs[0][j],path[j]←0或–1

(j=1,2,…,n-1)//n为图中顶点个数①求出最短路径的长度:dist[k]←min{dist[i]},iV-S;S←SU{k

};②修改:dist[j]←min{dist[j],dist[k]+Gn.arcs[k][j]};path[j]←k

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论