算法思想:假设连通网N=(V,E).PPT

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

例如,计算机专业的学生必须学完一系列规定的课程后才能毕业。网中的顶点表示各门课程的教学活动,有向边表示各门课程的制约关系。 课程代号 课程名称 先修课程 0 高等数学 无 1 程序设计基础 无 2 C程序设计 0,1 3 离散数学 0 4 数据结构 1,2,3 5 编译方法 3,4 6 操作系统 4 7.5 有向无环图及其应用 检查AOV网中是否存在回路的方法就是拓扑排序。 在AOV网中不能出现有向回路,如果存在回路,则说明某项“活动”能否进行要以自身任务的完成作为先决条件,显然,这样的工程是无法完成的。如果要检测一个工程是否可行,首先就得检查对应的AOV网是否存在回路。 一个AOV网的拓扑有序序列并不是惟一的。并且对于某个AOV网, 如果它的拓扑有序序列被构造成功,则该网中不存在有向回路,其各子工程可按拓扑有序序列的次序进行安排。 7.5 有向无环图及其应用 7.5.1 拓扑(Topology)排序 什么叫拓扑有序序列?? 它是由AOV网中的所有顶点构成的一个线性序列,在这个序列中体现了所有顶点间的优先关系。即若在AOV网中从顶点 Vi到顶点Vj有一条路径,则在序列中Vi排在Vj的前面,而且在此序列中使原来没有先后次序关系的顶点之间也建立起人为的先后关系。 7.5 有向无环图及其应用 【例如】:对于下列有向图 B D A C 可求得拓扑有序序列: A B C D 或 A C B D B D A C 反之,对于下列有向图 不能求得它的拓扑有序序列。 因为图中存在一个回路 {B, C, D} 进行拓扑排序的步骤: ① 在网中选择一个没有前驱的顶点且输出之; ② 在网中删去该顶点,并且删去该顶点出发的全部有向边; ③ 重复上述两步,直到网中不存在没有前驱的顶点为止。 这样操作后的结果有两种:一种是网中全部顶点均被输出,说明网中不存在有向回路;另一种是网中顶点未被全部输出,剩余的顶点均有前驱顶点,说明网中存在有向回路。 7.5 有向无环图及其应用 a b c g h d f e a b h c d g f e 【例】 练习 对于下图,试写出两种拓扑有序序列。 【答案】 拓扑序列:V0V1V4V2V5V3 或 V0V1V5V4V2V3 7.5.2 关键路径 在带权有向图中,以顶点表示事件,以弧表示活动,弧上的权表示活动持续的时间,则此带权有向图称为用边表示活动的网(Activity On Edge Network),简称AOE网。通常,AOE网可用来估算工程的完成时间。 正常情况下,工程活动只有一个开始点和一个结束点,因此AOE网中只有一个入度为0的点,称源点;有一个出度为0的点,称汇点。 AOE网可以并行工作,所以完成工程的最短时间是从源点到汇点的最长路径长度, 即路径上权数之和。路径长度最长的路径称关键路径,关键路径上的活动称关键活动。 显然若想加快工程的进度,就必须缩短关键活动的完成时间,提前完成非关键活动是无济于事的。 7.5.2 关键路径 问题: 假设以有向网表示一个施工流图,弧上的权值表示完成该项子工程所需时间。 问:哪些子工程项是“关键工程”? 即:哪些子工程项将影响整个工程的完成期限的。 整个工程完成的时间为: 从有向图的源点到汇点的最长路径。 a b c d e f g h k 6 4 5 2 1 1 8 7 2 4 4 例如: “关键活动”指的是:该弧上的权值增加 将使有向图上的最长路径的长度增加。 源点 汇点 6 1 7 4 定义几个与计算关键活动有关的量: 事件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]。 活动ak 的最迟允许开始时间 l[k] l[k]是在不会引起时间延误的前提下,该活动允许的最迟开始时间。 l[k] = Vl[j] - dur(i, j)。 其中,dur(i, j)是完成ak 所需的时间。 时间余量 l[k] - e[k] 表示活动ak 的最早可能开始时间和最迟允许开始时间的时间余量。l[k] == e[k]表示活动ak 是没有时间余量的

文档评论(0)

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

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

1亿VIP精品文档

相关文档