- 1、本文档共109页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构复习的资料 chap7图
如何进行拓扑排序? 一、从有向图中选取一个没有前驱 的顶点,并输出之; 重复上述两步,直至图空,或者图不空但找不到无前驱的顶点为止。 二、从有向图中删去此顶点以及所 有以它为尾的弧; 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 如何求关键活动? “事件(顶点)” 的 最早发生时间 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的顺序应该是按拓扑逆序的次序; 因为 拓扑逆序序列即为拓扑有序序列的 逆序列, 因此 应该在拓扑排序的过程中, 另设一个“栈”记下拓扑有序序列。 1. 熟悉图的各种存储结构及其构造算法,了解实际问题的求解效率与采用何种存储结构和算法有密切联系。 2. 熟练掌握图的两种搜索路径的遍历:遍历的逻辑定义、深度优先搜索和广度优先搜索的算法。 在学习中应注意图的遍历算法与树的遍历算法之间的类似和差异。 3. 应用图的
您可能关注的文档
- 数字推理题的解题的技巧大全.doc
- 数字电子技术基础2011.4.13 第二章习题的答案.docx
- 数字化油气田监控系统技术的方案基于物联网技术平台.docx
- 数字化技术的项目综合训练指导书.docx
- 数字电子技术基础数字电路习题的答案.doc
- 数字电子技术基础第4章 作业的答案.ppt
- 数字电子技术基础第3章 课后习题的答案.doc
- 数字电子技术基础第5章 作业的答案.ppt
- 数字电子技术基础课后习题的答案 第4章 组合逻辑电路.doc
- 数字电子技术基础课后习题的答案第3章门电路.doc
- DeepSeek培训课件入门宝典:第2册 开发实战篇 .pptx
- 全面认识全过程人民民主-2024春形势与政策课件.pptx
- 2024春形势与政策-全面认识全过程人民民主.pptx
- 2025年春季学期形势与政策第二讲-中国经济行稳致远讲稿.docx
- 2024春形势与政策-铸牢中华民族共同体意识课件.pdf
- 2024春形势与政策-走好新时代科技自立自强之路课件 (2).pptx
- 2024春形势与政策-走好新时代科技自立自强之路课件.pptx
- 形势与政策学习指导教学-整套课件.pdf
- 2023年春季形势与政策讲稿第三讲-开创高质量发展新局面.pdf
- DeepSeek培训课件-清华大学-DeepSeek模型本地部署与应用构建.pptx
文档评论(0)