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

数据结构与算法--第26讲图3教学课件.ppt

  1. 1、本文档共59页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 拓扑排序 0 1 2 3 4 5 in vertex firstarc 0 A ∧ 0 B 0 C 0 D 0 E 0 F ∧ 0 3 ∧ 0 0 5 ∧ 2 3 ∧ 3 5 ∧ A F A F AOV网应用:拓扑排序 * 1. 栈或队列S初始化;累加器count初始化; 2. 扫描顶点表,将没有前驱的顶点压栈或入队; 3. 当栈或队列S非空时循环 3.1 退出vj栈顶或队首元素;输出vj;累加器加1 3.2 将顶点vj的各个邻接点的入度减1; 3.3 将新的入度为0的顶点入栈或入队; 4. if (countvertexNum) 输出有回路信息; 拓扑排序算法——伪代码 AOV网应用:拓扑排序 * template class ElemType StatusCode TopSort(const AdjMatrixDirGraphElemType g) // 初始条件:存在有向图g // 操作结果:如g无回路,则输出g的顶点的一个拓扑序列, // 并返回SUCCESS,否则返回FAIL { int *indegree = new int[g.GetVexNum()]; //入度数组 LinkQueueint q; // 队列 int count = 0; StatIndegree(g, indegree); // 统计顶点的入度 for (int v = 0; v g.GetVexNum(); v++) { // 遍历顶点 if (indegree[v] == 0) q.InQueue(v);// 建立入度为0的顶点队列 } * while (!q.Empty()) { // 队列非空 int v1; q.OutQueue(v1); // 取出一个入度为0的顶点 cout v1 ; count++; // 对输出顶点进行记数 for (int v2 = g.FirstAdjVex(v1); v2 != -1; v2 = g.NextAdjVex(v1, v2)) { // v2为v1的一个邻接点 if (--indegree[v2] == 0)//邻接点入度减1 q.InQueue(v2);//入度为0,v2入队 }; } } delete []indegree; // 释放indegree所占用的存储空间 if (count g.GetVexNum()) return FAIL; // g有回路 else return SUCCESS; // 拓扑排序成功 } * 2、关键路径 AOE网:在一个表示工程的带权有向图中,用顶点表示事件,用有向边表示活动,边上的权值表示活动的持续时间,称这样的有向图叫做边表示活动的网,简称AOE网。AOE网中没有入边的顶点称为始点(或源点),没有出边的顶点称为终点(或汇点)。 AOE网的性质: ⑴ 只有在某顶点所代表的事件发生后,从该顶点出发的各活动才能开始; ⑵ 只有在进入某顶点的各活动都结束,该顶点所代表的事件才能发生。 一、有向无环图及其应用 * a b c d e f g h k 6 4 5 2 1 1 8 7 2 4 4 例如: 整个工程完成的时间为: 从有向图的源点到汇点的最长路径 源点 汇点 6 1 7 4 * V3 V1 V4 V6 V5 V2 a4=3 a1=3 a2=2 a6=3 a5=4 a3=2 a7=2 a8=1 顶点表示事件 边表示活动 事件Vj发生表示 ak已结束 ak Vj Vi 事件Vi发生表示 ak可以开始 AOE网 规定: 一、有向无环图及其应用 * AOE网可以回答下列问题: 1. 完成整个工程至少需要多少时间? 2. 为缩短完成工程所需的时间, 应当加快哪些活动? 从始点到终点的路径可能不止一条,只有各条路径上所有活动都完成了,整个工程才算完成。因此,完成整个工程所需的最短时间取决于从始点到终点的最长路径长度,即这条路径上所有活动的持续时间之和。这条路径长度最长的路径就叫做关键路径。 一、有向无环图及其应用 * 事件Vj 的最早发生时间Ve[j],是从源点到顶点Vj的最大路径长度。 事件Vj 的最迟发生时间Vl[j], 指在不推迟整个工期的前提下,事件最晚必须发生的时间。 活动ak的最早开始时间e[k],该活动的尾事件的最早发生时间。 活动ak的最晚开始时间l[k],它的弧头顶点事件允许的最晚发生时间减去该活动持续的时间。 活动ak 的时间余量

文档评论(0)

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

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

1亿VIP精品文档

相关文档