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

[工学]深度优先搜索算法最小生成树关键路径动态演示.ppt

[工学]深度优先搜索算法最小生成树关键路径动态演示.ppt

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

最小生成树演示 用一个数组L来存储各个顶点到当前最小生成树的最短 距离。 初始化数组L: 初始化数组L: 开始生成最小生成树: 关键路径演示 * v5 v1 v2 v3 v4 3 1 4 2 4 3 2 0 2 1 0 1 ^ ^ ^ ^ ^ 0 1 2 3 4 vertex firstedge adjvex next 顶点表 边表 V3 V1 V4 V5 V2 G1 void DFS1 (AdjGraph* G, int i) //以vi为出发点时对邻接表表示的图G进行深度优先搜索 { EdgeNode *p; coutG→vexlist[i].vertex;//访问顶点vi; visited[i]=TRUE; //标记vi已访问 dfn[i]=count++; //对vi进行编号 p=G→vexlist[i].firstedge; //取vi边表的头指针 while( p ) { //依次搜索vi的邻接点vj, 这里 j=p-adjvex if ( ! visited [ p→adjvex ] ) //若vj尚未访问 DFS1(G, p→adjvex); // 则以vj为出发点先深搜索 p=p→next; } } //DFS1 void DFS2 ( MTGraph *G, int i ) // 以vi为出发点对矩阵(0,1矩阵)表示的图G进行深度优先搜索 { int j; coutG→vexlist[i]; //访问定点vi visited[i]=TRUE; //标记vi已访问 dfn[i]=count; //对vi进行编号 count ++; //下一个顶点的编号 for( j=0; jG→n; j++) //依次搜索vi的邻接点 if((G→edge[i][j] == 1) ! visited[j] ) //若vj尚未访问 DFS2( G, j ); }//DFS2 0 1 2 3 = 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 0 G.edge 1 5 4 5 2 3 5 6 6 6 a b d c e f 算法采用邻接矩阵来存储图。 f e d c b a 6 5 4 3 2 1 ∞ 6 2 4 ∞ ∞ f 6 ∞ ∞ 6 3 ∞ e 2 ∞ ∞ 5 ∞ 5 d 4 6 5 ∞ 5 1 c ∞ 3 ∞ 5 ∞ 6 b ∞ ∞ 5 1 6 ∞ a f e d c b a 1 length v u 6 5 4 3 2 u为顶点,v为当前生成树上距离顶点u最近的顶点,length为边(u,v)的权值。 L: 1 length v u 6 5 4 3 2 初始情况下,生成树中只有一个顶点a,并令其到自身的距离为0。 L: 1 5 4 5 2 3 5 6 6 6 a b d c e f 0 a a 1 ∞ ∞ 5 1 6 length a a a a a v f e d c b u 6 5 4 3 2 在具体实现时, ∞可以用一个比较大的数来表示。 L: 1 5 4 5 2 3 5 6 6 6 a b d c e f 0 a a 1 ∞ ∞ 5 1 6 length a a a a a v f e d c b u 6 5 4 3 2 接下来,选择距离生成树最近的顶点。方法是遍历数组L,找出length不等于0,且为最小的距离。 length等于0表示当前顶点已经被选入生成树。 L: 1 5 4 5 2 3 5 6 6 6 a b d c e f 0 a a 1 ∞ ∞ 5 1 6 length a a a a a v f e d c b u 6 5 4 3 2 c被选中,加入生成树中。 并更新数组L。 L: 1 5 4 5 2 3 5 6 6 6 a b d c e f 0 a a 1 ∞ ∞ 5 0 6 length a a a a a v f e d c b u 6 5 4 3 2 L: 1 5 4 5 2 3 5 6 6 6 a b d c e f 更新数组L,c被选入生成树,故对应项的Length应该赋值为0 0 a a 1 ∞ ∞ 5 0 6 length a a a a a v f e d c b u 6 5 4

文档评论(0)

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

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

1亿VIP精品文档

相关文档