有向无环图及其应用有向无环图及其应用.ppt

有向无环图及其应用有向无环图及其应用.ppt

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

有向无环图 无环的有向图称为有向无环图,简称DAG图 P179 图7.21:有向树、DAG图、有向图 DAG图可用于: 描述含有公共子式的表达式; 描述工程的进行过程; 有向无环图是描述一项工程进行过程的有效工具,主要进行拓扑排序和关键路径的操作。 工程能否顺利进行—拓扑排序 完成整个工程所需的最短时间—关键路径 活动网络 (Activity Network) 计划、施工过程、生产流程、程序流程等都是“工程”。除了很小的工程外,一般都可以将工程分为若干个称作“活动”的子工程,完成了这些活动,整个工程就可以完成了。 例:计算机专业学生的学习就是一个工程,每一门课程的学习就是整个工程的一个活动,其中有些课程要求先修课程,有些则不要求,这样在有的课程之间就存在领先关系,而有的课程则可以并行学习。 可以用有向图表示一个工程。在这种有向图中,用顶点表示活动,用有向边Vi, Vj表示活动Vi 必须先于活动Vj 进行。这种有向图称作顶点表示活动的AOV网 (Activity On Vertex)。 在AOV网络中不能出现有向回路, 即有向环。如果出现了有向环,则意味着某项活动应以自己作为先决条件。 因此,对给定的AOV网络,必须先判断它是否存在有向环。 检测有向环的一种方法是对AOV网络构造它的拓扑有序序列。即将各个顶点 (代表各个活动)排列成一个线性有序的序列,使得AOV网络中所有应存在的前驱和后继关系都能得到满足。 这种构造AOV网络全部顶点的拓扑有序序列的运算就叫做拓扑排序。 如果通过拓扑排序能将AOV网络的所有顶点都排入一个拓扑有序的序列中, 则该网络中必定不会出现有向环。 如果AOV网络中存在有向环,此AOV网络所代表的工程是不可行的。 例如, 对学生课程学习工程图进行拓扑排序, 得到的拓扑有序序列为 C1 , C2 , C3 , C4 , C5 , C6 , C8 , C9 , C7 或 C1 , C8 , C9 , C2 , C5 , C3 , C4 , C7 , C6 拓扑排序的方法 ① 输入AOV网络,令 n 为顶点个数。 ② 在AOV网络中选一个没有直接前驱的顶点, 并输出之; ③ 从图中删去该顶点, 同时删去所有它发出的有向边; ④ 重复以上 ②、③步, 直到 全部顶点均已输出,拓扑有序序列形成,拓扑排序完成;或 图中还有未输出的顶点, 但已跳出处理循环。说明图中还剩下一些顶点, 它们都有直接前驱。这时网络中必存在有向环。 在邻接表中增设一个数组indegree[ ],记录各顶点入度。入度为零的顶点即无前驱顶点。 在算法中, 使用一个存放入度为零的顶点的栈, 供选择和输出无前驱的顶点。 拓扑排序算法可描述如下: 建立入度为零的顶点栈; 当入度为零的顶点栈不空时, 重复执行 从顶点栈中退出一个顶点, 并输出之; 从AOV网络中删去这个顶点和它发出的边, 边的终顶点入度减一; 如果边的终顶点入度减至0, 则该顶点进入度为零的顶点栈; 如果输出顶点个数少于AOV网络的顶点个数, 则报告网络中存在有向环。 P182算法7.12 用边表示活动的网络(AOE网) 如果在带权的有向无环图中, 用有向边表示一个工程中的活动 (Activity), 用边上权值表示活动持续时间 (Duration), 用顶点表示事件 (Event), 则这样的有向图叫做用边表示活动的网络, 简称 AOE ( Activity On Edges ) 网。 AOE网在某些工程进度估算方面非常有用。例如,可以使人们了解: 完成整个工程至少需要多少时间(假设网络中没有环)? 为缩短完成工程所需的时间, 应当加快哪些活动? 从源点到各个顶点, 以及从源点到汇点的有向路径可能不止一条,这些路径的长度也可能不同,完成不同路径的活动所需的时间虽然不同,但只有各条路径上所有活动都完成了, 整个工程才能完成。 因此, 完成整个工程所需的时间取决于从源点到汇点的最长路径长度, 即在这条路径上所有活动的持续时间之和。这条路径长度最长的路径叫做关键路径(Critical Path)。 定义几个与计算关键活动有关的量: ① 事件Vi 的最早发生时间ve(i) 是从源点V0 到顶点Vi 的最长路径长度 ② 事件Vi 的最迟发生时间vl[i] 是在保证汇点Vn-1 在ve[n-1] 时刻完成(即不影响整个工程工期)的前提下,事件Vi 允许的最迟开始时间。 ③ 活动ak 的最早可能开始时间 e[k] 设活动ak 在弧 Vi , Vj 上, 则e[k]是从源点V0到顶点Vi 的最长路径长度。因此, e[k] = ve[i] ④ 活动

文档评论(0)

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

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

1亿VIP精品文档

相关文档