第16讲拓扑排序和关键路径.ppt

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Essential of Lecture Sixteen :;一、有向无环图及其应用;一、有向无环图及其应用;一、有向无环图及其应用; 某工程可分为6个子工程,若用顶点表示子工程(也称活动), 用弧表示子工程间的顺序关系。 工程流程可用如下AOV网表示:;一、有向无环图及其应用;c1 c2 c3 c4 c5 c6 c7 C8 c9 c10 c11 c12; 一个可行的施工计划为:A,B,C, D,E,F 一个可行的学习计划为:C1,C9,C4,C2,C10,C11,C12,C3,C6,C5,C7,C8 可行的计划的特点:若在流程图中顶点v是顶点u 的前趋,则在计划序列中顶点v 也???u的前趋。;一、有向无环图及其应用;例如:对于下列有向图;B;一、有向无环图及其应用;C1;C2;C4;C6;C6;C1;a;一、有向无环图及其应用;设计数据结构;(a) 一个AOV网 (b) AOV网的邻接表存储 ;拓扑排序;拓扑排序;拓扑排序;拓扑排序;拓扑排序;拓扑排序;1. 栈或队列S初始化;累加器count初始化; 2. 扫描顶点表,将没有前驱的顶点压栈或入队; 3. 当栈或队列S非空时循环 3.1 退出vj栈顶或队首元素;输出vj;累加器加1 3.2 将顶点vj的各个邻接点的入度减1; 3.3 将新的入度为0的顶点入栈或入队; 4. if (count<vertexNum) 输出有回路信息;;template <class ElemType> StatusCode TopSort(const AdjMatrixDirGraph<ElemType> &g) // 初始条件:存在有向图g // 操作结果:如g无回路,则输出g的顶点的一个拓扑序列, // 并返回SUCCESS,否则返回FAIL { int *indegree = new int[g.GetVexNum()]; //入度数组 LinkQueue<int> 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; // 拓扑排序成功 };一、有向无环图及其应用;a;;一、有向无环图及其应用;一、有向无环图及其应用;ve[k]是指从始点开始到顶点vk的最大路径长度。这个长度???定了所有从顶点vk发出的活动能够开工的最早时间。 ;v2;vl[k]是指在不推迟整个工期的前提下,事件vk允许的最晚发生时间。;v2; ⑶ 活动的最早开始时间e[i] ;v2;活动ai的最晚开始时间是指,在不推迟整个工期的前提下, ai必须开始的最晚时间。 若ai由弧<vk,vj>表示,则ai的最晚开始时间要保证事件vj的最迟发生时间不拖后。因此,有: l[i]=vl[j]-len<vk, vj> ;;a2;显然 求ve的顺序应该是按拓扑有序的次序; AOV网,AOE网,都能表示工程各子工程的流程,一个用顶点表示活动,一个用边表示活动,但AOV网侧重表示活动的前后次序,AOE网除表示活动先后次序,还表示了活动的持续时间等,因此可利用AOE网解决工程所需最短时间及哪些子工程拖延会影响整个工程按时完成等问题。 实际应用中采用那一种

文档评论(0)

151****1926 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档