单元实验六.ppt

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

最短路径 1. 问题的提出 交通咨询系统、通讯网、计算机网络需要寻找两结点间最短路径 交通咨询系统:A地点到B地点的最短路径 计算机网:发送Email节省费用,A到B沿最短路径传送 单源点最短路径 西安电子科技大学软件学院 - School of Computer Software, Xidian University * 单元实验六 ------图的最短路径 2. 最短路径及其长度 路径长度:路径上的边数 路径上边的权值之和 最短路径:两结点间权值之和最小的路径 3. 最短路径 单源点最短路径 所有顶点间的最短路径 20 V4 V5 V0 V2 V3 V1 100 10 5 60 10 50 30 源点 终点 最短路径 路径长度 v0 v1 无 v2 (v0,v2) 10 v3 (v0,v4,v3) 50 v4 (v0,v4) 30 v5 (v0,v4,v3,v5) 60 设置图中的一个顶点为源点(起点),其余顶点为终点 求源点到各个终点的最短路径 Dijkstra算法的基本思想 按路径长度递增顺序求最短路径算法 迪杰斯特拉算法(Dijkstra) 20 V4 V5 V0 V2 V3 V1 100 10 5 60 10 50 30 始点 终点 最短路径 路径长度 v0 v2 (v0,v2) 10 v3 (v0,v4,v3) 50 v4 (v0,v4) 30 v5 (v0,v4,v3,v5) 60 Dijkstra算法的基本思想 按路径长度递增顺序求最短路径算法,采用邻接矩阵存储结构 迪杰斯特拉算法(Dijkstra) 20 V4 V5 V0 V2 V3 V1 100 10 5 60 10 50 30 ∞ ∞ 10 ∞ 30 100 ∞ ∞ 5 ∞ ∞ ∞ ∞ ∞ ∞ 50 ∞ ∞ ∞ ∞ ∞ ∞ ∞ 10 ∞ ∞ ∞ 20 ∞ 60 ∞ ∞ ∞ ∞ ∞ ∞ 0 1 2 3 4 5 0 1 2 3 4 5 Dijkstra算法的基本思想 按路径长度递增顺序求最短路径算法。 Dijkstra 算法的基本步骤 设V0是起始源点,S是已求得最短路径的终点集合。 V-S = 未确定最短路径的顶点的集合, 初始时 S={V0},长度最短的路径是边数为1且权值最小的路径。 下一条长度最短的路径: ① Vi ? V - S ,先求出V0 到Vi 中间只经 S 中顶点的最短路径; ② 上述路径中长度最小者即为下一条长度最短的路径; ③ 将所求最短路径的终点加入S 中; 3)重复2)直到求出所有终点的最短路径。 迪杰斯特拉算法(Dijkstra) 20 V4 V5 V0 V2 V3 V1 100 10 5 60 10 50 30 以V0为源点 迪杰斯特拉算法(Dijkstra) V0 V5 V2 V4 10 30 100 V3 50 V3 20 V5 60 V5 10 最短路径的求解过程 i=1 ∞ 10 (v0,v2) ∞ 30 (v0,v4) 100 (v0,v5) i=2 ∞ ? 60 (v0, v2,v3) 30 (v0,v4) 100 (v0,v5) i=3 ∞ ? 50 (v0, v4,v3) ? 90 (v0, v4,v5) i=4 ∞ ? ? ? 60 (v0, v4,v3,v5) i=5 ∞ ? ? ? ? v2 v4 v3 v5 终点 ? v1 v2 v3 v4 v5 vj S {v0,v2} {v0, v2,v4} {v0, v2,v4, v3} {v0, v2,v4, v3,v5} ? ? 20 V4 V5 V0 V2 V3 V1 100 10 5 60 10 50 30 以V0为源点 迪杰斯特拉算法(Dijkstra) 数据结构 一维数组final[] 表示顶点集合S 一维数组D[] D[i]: 源点到顶点i的路径长度 邻接矩阵 arcs[j][k]:顶点j与k所关联的边的权值 迪杰斯特拉算法(Dijkstra) 设V0是源点,S是已求得最短路径的终点集合,则V-S是未确定最短路径的顶点的集合。初始时 S ={V0},D[i]用于保存从源点出发到达顶点Vi的最短

文档评论(0)

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

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

1亿VIP精品文档

相关文档