网站大量收购独家精品文档,联系QQ:2885784924

7数据结构与算法——图.ppt

  1. 1、本文档共150页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(1)假设用带权的邻接矩阵arcs来表示带权的有向图,arcs[i][j]表示vi,vj上的权值。若边不存在,则为无穷。 初值:S={vi} D的初态是:若从v到vi有弧D[i]记录弧上的权值。否则为无穷大。 (2)选择vj使得 vj就是当前求得的从v出发的最短路径的终点,把j并入S。 7.6.1 单源最短路径 算法要点 (3)修改从v出发到集合V-S上任一顶点vk可达的最短路径 D[j]+arcs[j][k]D[k] 则修为: D[k] =D[j]+arcs[j][k] (4)重复(2),(3)共n-1次。 7.6.1 单源最短路径 算法要点 原来的邻接矩阵存储结构: typedef struct ArcCell { // 弧的定义 VRType adj; InfoType *info; // 该弧相关信息的指针 } ArcCell, AdjMatrix[MAX_VERTEX_NUM] [MAX_VERTEX_NUM]; 7.6.1 单源最短路径 存储结构 typedef struct { // 图的定义 VErtexType vexs[MAX_VERTEX_NUM]; AdjMatrix arcs; // 弧的信息 int vexnum, arcnum; // 顶点数,弧数 GraphKind kind; // 图的种类标志 } MGraph; MGraph G; 7.6.1 单源最短路径 存储结构 实用存储结构: typedef struct { // 图的定义 VErtexType vexs[MAX_VERTEX_NUM]; float arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; // 弧的信息 int vexnum, arcnum; // 顶点数,弧数 } MGraph; MGraph G; 7.6.1 单源最短路径 存储结构 (1)引入一个辅助数组D[],D[i]表示当前所找到的源点到每个终点i的最短路径长度。 最短路径的初值即为有向边的权值: D[i]=G.arcs[v0][i] 引入辅助数组final[],final[i]=1表示顶点i的最短路径已求出,final[i]=0表示顶点i的最短路径还没有求出。 初始状态:S[v0](源点)标志为1,其它为0。 引入数组P[]来记录路径。 7.6.1 单源最短路径 算法概要分析 (2)选择D[]中路径最小值的顶点v(已求出最短路的顶点除外) , v就是当前求得的一条从v出发的最短路径的终点。 修改final[v]=1。 (3)修改未求出最短路径的顶点的最短路径长度,如果:D[v]+G.arcs[v][w]D[w] 则修改D[w]为:D[w]=D[v]+G.arcs[v][w] 同时修改P[w]=v; (4)重复操作(2)、(3)n-1次。求得从v0到图上其余各顶点的最短路径长度递增序列。 7.6.1 单源最短路径 算法概要分析 void ShortestPath_DIJ(MGraph G,int v0, int P,float D) { int i=0,j, v,w,min;bool final[MAX_VERTEX_NUM]; for (v=0; vG.vexnum; ++v) { final[v] = FALSE; D[v] = G.arcs[v0][v]; P[v] = -1; // 设空路径 if (D[v] INFINITY) P[v] = v0; } final[v0] = TRUE; P[v0]=-1 7.6.1 单源最短路

文档评论(0)

2232文档 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档