东南大学数据结构Lec010.pptx

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

第10讲 图的应用数据结构有向无环图及其应用最短路径有向无环图的应用背景数据结构一个工程(project)都可分为若干个称为活动(active)的子工程(或工序),各个子工程受到一定的条件约束:某个子工程必须开始于另一个子工程完成之后;整个工程有一个开始点(起点)和一个终点。 人们关心的问题:工程能否顺利完成?影响工程的关键活动是什么?估算整个工程完成所必须的最短时间是多少?有向无环图(Directed Acycling Graph)是图中没有回路(环)的有向图。DAG是一类具有代表性的图,主要用于研究工程项目的工序问题、工程时间进度问题等。AOV网在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系,这样的有向图为顶点表示活动的网 ,称为AOV网(Activity On Vertex Network)。AOV网中的弧表示活动之间存在的某种制约关系;AOV网中不能存在回路。设 G =(V, E)是一个具有n个顶点的有向图,V中的顶点序列v1, v2, ……, vn,满足若从顶点vi到vj有一条路径,则在顶点序列中顶点vi必在顶点vj之前。这样的顶点序列为一个拓扑序列。拓扑排序就是对一个有向图构造拓扑序列的过程。输出全部顶点,则说明是不存在环的AOV网;否则不是AOV网。解决一个工程能否顺利进行的问题。数据结构拓扑排序算法数据结构算法思想① 在AOV网中选择一个没有前驱的顶点(入度为0)且输出; ② 在AOV网中删除该顶点,以及从该顶点出发(以该顶点为尾) 的所有弧 ;③ 重复①、②,直到图中全部顶点都已输出(图中无环)或图中不存在无前驱的顶点(图中必有环)。算法实现采用正邻接表作为AOV网的存储结构;设立堆栈,用来暂存入度为0的顶点;删除顶点以它为尾的弧,即弧头顶点的入度减1。v2v2v2v2v5v2v1(b) 输出v1后(c) 输出v6后(d) 输出v4后(e) 输出v3后(a) 有向图v3v3v3v4v4v3v4v6v5v5v5v6v5拓扑排序过程数据结构有向图的拓扑排序过程,其拓扑序列是: (v1,v6,v4,v3,v2,v5)AOV网 vs AOE网AOV网造外壳造发动机集中完成组装开始造轮子AOE网造底盘外壳完成20.5发动机完成其它零部件30.520.50.5轮子完成部件集中到位完成开始20.5底盘完成20.5数据结构其它零部件AOV网与AOE网都是用来对工程建模。AOV网只描述活动之间的制约关系;AOE网边上的权值表示活动持续时间(建立在活动之间制约关系没有矛盾的基础上)。与AOE有关的研究问题完成整个工程至少需要多少时间?(最短时间)哪些活动是影响工程进度(费用)的关键?路径上各个活动所持续的时间之和称为路径长度,从源点到汇点具有最大长度的路径叫关键路径,在关键路径上的活动叫关键活动。关键活动是影响整个工程的关键,只有缩短关键路径上的关键活动时间才可以减少整个工程的工期长度。如何找出关键路径?数据结构关键路径算法原理找到所有活动的最早开始时间和最晚开始时间,并且比较它们,如果相等就意味着此活动是关键活动,活动间的路径为关键路径。定义几个参数:事件的最早发生时间etv (earliest time of vertex):顶点vk的最早发生时间;事件的最晚发生时间ltv (latest time of vertex):顶点vk的最晚发生时间,即对应事件最晚需要开始的时间,超出此时间将会延误整个工期;活动的最早开工时间ete (earliest time of edge):弧ak的最早发生时间;活动的最晚开工时间lte(latest time of edge):弧ak的最晚发生时间,即不推迟工期的最晚开工时间。数据结构关键路径算法算法思想① 利用拓扑排序求出AOE网的一个拓扑序列; ② 从拓扑排序的序列的第一个顶点(源点)开始,按拓扑顺序依次计算每个事件的最早发生时间etv(i) ; 除源点外,只有进入顶点 vj 的所有弧所代表的活动全部结束后,事件vj才能发生。即只有vj 的所有前驱事件vi的最早发生时间etv(i)计算出来后,才能计算etv(j) 。从拓扑排序的序列的最后一个顶点(汇点)开始,按逆拓扑顺序依次计算每个事件的最晚发生时间ltv(i) ;只有 vj 的所有后继事件 vk 的最晚发生时间ltv(k)计算出来后,才能计算ltv(j) 。数据结构a9=6a7=8a3=9a11=2a8=4a1=3a12=5a2=10a4=13a5=12a10=11a6=7求AOE中的关键路径和关键活动拓扑排序的序列: (v0, v1, v2, v3, v4, v5, v6, v7, v8);计算各个事件的etv(i)和ltv(i)的值(见下表);关键路径: (v0, v2, v4, v7 ,

文档评论(0)

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

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

1亿VIP精品文档

相关文档