大学教程(零起点)数据结构-1图.ppt

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

7.5 最短路径 图的最常用的应用之一是在交通运输和通信网络中寻求最短路径。 在一个带权图中,若从一个顶点到另一个顶点存在着一条路径,则称该路径上所经过边的权值之和为该路径上的带权路径长度。 带权图中从一个顶点到另一个顶点可能存在着多条路径,我们把带权路径长度值最小的那条路径也叫做最短路径,其带权路径长度也叫做最短路径长度或最短距离。 带权图分无向带权图和有向带权图 如从A城到B城有一条公路,A城的海拔高于B城,若考虑到上坡和下坡的车速不同,则边A,B 和边 B,A 上表示行驶时间的权值也不同,即A,B 和B,A应该是两条不同的边, 路径开始顶点为源点 路径的最后一个顶点为终点 某源点到其余顶点之间的最短路径 Dijkastra算法思想: 顶点分成两组 第一组包括已确定最短路径的顶点,初始只含源点 第二组包括尚未确定最短路径的顶点, 按某种方式逐个把第二组的顶点加到第一组,直至从源点可到达的所有顶点都包括在第一组中。此过程中,保持从源点到第一组各顶点的路程长度,不大于从源点到第二组的任何顶点的路径长度。 Dijkastra算法步骤: 初始状态: 第一组只包括顶点源点v, 第二组包括其他所有顶点,并每个点对应一个距离 源点到vj对应的距离是:边v,vj权值, v对应的距离值为 0 若无边则距离是 无穷大 反复从第二组中选距离最小的vk加到第一组中,每加入一个顶点vk,修改源点v到各个顶点的距离,修改后再次选择距离最小点加入第一组 有向图G的n个顶点为V0到Vn-1, 用邻接矩阵表示 顶点分为两组 S[i] 标记已经找到最短路径S[i]=1或S[i]=0 d[i] 记录源点到顶点Vi的最短路径长度 p[i] 源点到Vi的最短路径上Vi点的前驱顶点 若从源点到Vi顶点无路径,则取-1 假设Gn为某有向图, v0为源点! 初始化 for (i=0; in; i++) { s[ i ] = 0; dist[ i ] = Gn.arcs[ 0 ][ i ]; if ( dist[ i ] max ) pre[ i ] = 0; else pre[ i ] = -1; } pre[ 0 ] = -1; S[ 0 ] = 1; for (i=1; in-1; i++) { min=max; for ( j=0; jn; j++ ) if (S[j]==0 ( dist[j]min) ) { min=dist[j]; k=j; } S[k]=1; for (j=0; jn; j++) if (S[j]==0 (dist[j]min+Gn.arcs[k][j])) { dist[j]= dist[k]+ Gn.arcs[k][j]); pre[j]=k; } } for (i=0; in; j++) { if ( dist[i] max i !=0 ) { printf(“v%d --”,i); next=p[i]; while(next!=v0) { printf(v%d --,next}; next=p[next]; } Printf(“v%d;%d\n”,v0,d[i]); } } 假设Gn为某有向图, v0为源点! 初始化 for (i=0; in; i++) { s[ i ] = 0; dist[ i ] = Gn.arcs[ 0 ][ i ]; if ( dist[ i ] max ) pre[ i ] = 0; else pre[ i ] = -1; } pre[ 0 ] = -1; S[ 0 ] = 1; for (i=1; in-1; i++) { min=max; for ( j=0; jn; j++ ) if (S[j]==0 ( dist[j]min) ) { min=dist[j]; k=j; } S[k]=1; for (j

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档