- 1、本文档共113页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
例如:对于下列有向图 B D A C 可求得拓扑有序序列: A B C D 或 A C B D 由此所得顶点的线性序列称之为拓扑有序序列 B D A C 反之,对于下列有向图 不能求得它的拓扑有序序列。 因为图中存在一个回路 {B, C, D} 如何进行拓扑排序? 一、从有向图中选取一个没有前驱 的顶点,并输出之; 重复上述两步,直至图空,或者图不空但找不到无前驱的顶点为止。 二、从有向图中删去此顶点以及所 有以它为尾的弧; a b c g h d f e a b h c d g f e 在算法中需要用定量的描述替代定性的概念 没有前驱的顶点 ?? 入度为零的顶点 删除顶点及以它为尾的弧 ?? 弧头顶点的入度减1 取入度为零的顶点v; while (v0) { printf(v); ++m; w:=FirstAdj(v); while (w0) { inDegree[w]--; w:=nextAdj(v,w); } 取下一个入度为零的顶点v; } if mn printf(“图中有回路”); 算法描述 为避免每次都要搜索入度为零的顶点, 在算法中设置一个“栈”,以保存“入度为零”的顶点。 CountInDegree(G,indegree); //对各顶点求入度 InitStack(S); for ( i=0; iG.vexnum; ++i) if (!indegree[i]) Push(S, i); //入度为零的顶点入栈 count=0; //对输出顶点计数 while (!EmptyStack(S)) { Pop(S, v); ++count; printf(v); for (w=FirstAdj(v); w; w=NextAdj(G,v,w)){ --indegree(w); // 弧头顶点的入度减一 if (!indegree[w]) Push(S, w); //新产生的入度为零的顶点入栈 } } if (countG.vexnum) printf(“图中有回路”) 7.8 关键路径 问题: 假设以有向网表示一个施工流图,弧上的权值表示完成该项子工程所需时间。 问:哪些子工程项是“关键工程”? 即:哪些子工程项将影响整个工程的完成期限的。 整个工程完成的时间为:从有向图的源点到汇点的最长路径。 a b c d e f g h k 6 4 5 2 1 1 8 7 2 4 4 例如: “关键活动”指的是:该弧上的权值增加 将使有向图上的最长路径的长度增加。 源点 汇点 6 1 7 4 如何求关键活动? 什么是“关键活动” ? 该活动的最早开始时间 = 该活动的最迟开始时间 i j dut “事件(顶点)” 的 最早发生时间 ve(j) ve(j) = 从源点到顶点j的最长路径长度; “事件(顶点)” 的 最迟发生时间 vl(k) vl(k) = 从顶点k到汇点的最短路径长度; 假设第 i 条弧为 j, k 则 对第 i 项活动言 “活动(弧)”的 最早开始时间 ee(i) ee(i) = ve(j); “活动(弧)”的 最迟开始时间 el(i) el(i) = vl(k) – dut(j,k); 事件发生时间的计算公式: ve(源点) = 0; ve(k) = Max{ve(j) + dut(j, k)} vl(汇点) = ve(汇点); vl(j) = Min{vl(k) – dut(j, k)} a b c d e f g h k 6 4 5 2 1 1 8 7 2 4 4 0 0 0 0 0 0 0 0 0 6 4 5 7 11 5 7 15 14 18 18 18 18 18 18 18 18 18 18 16 14 8 6 6 10 8 0 7 拓扑有序序列: a - d - f - c - b - e - h - g - k 0 6 4 5 7 7 15 14 18 18 14 16 10 7 8 6 6 0 0 0 0 6 4 5 7 7 7 15 14 14 16 0 2 3 6 6 8 8 7 10 算法的实现要点: 显然,求ve的顺序应该是按拓扑有序的次序; 而 求vl的顺序应该是按拓扑逆序的次序; 因为 拓扑逆序序列即为拓扑有序序列的 逆序列
您可能关注的文档
- 为他人开一朵花(人民版)课件讲述.ppt
- 2016年新《事业单位会计制度》讲解之限时考试100分第二套讲解.doc
- 乌东110kV变电所电池更换标准化作业指导书讲述.doc
- 乌鸡家鸡血清测定-结题报告讲述.pptx
- 乌克兰局势讲述.doc
- 临漳商圈商业讲述.pptx
- 2016年银行招聘内部复习资料专题之管理学知识点总结最新版讲解.doc
- 乔尔帝纳波利讲话个人摘录--中英对照讲述.docx
- 专题云计算安全讲述.ppt
- 第七章实验性研究(3学时)重点.ppt
- 乙醇气固非均相催化制备乙烯讲述.docx
- 2016最新人教版一年级语文上册12雪地里的小画家讲解.ppt
- (四)直方图类讲解.doc
- (通用版)2016高考英语二轮复习第一部分题型专题方略专题一阅读理解第二讲推理判断题课件讲解.ppt
- 第三讲,作业成本法重点.ppt
- 2017.1业务学习-PICC相关知识讲解.ppt
- (修改6)电子信息科学与技术专业讲解.doc
- (最最新)2012年步步高政治大二轮专题复习课件:专题二_生产、劳动与经营讲解.ppt
- 2017版《三维设计》高考英语(人教版)大一轮复习课件:必修四Module2TrafficJam讲解.ppt
- 第三讲_醛__羧酸__酯重点.ppt
文档评论(0)