第二十三讲有向无环图的应用课件.ppt

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

滨州学院计算机科学技术系 数据结构 滨州学院计算机科学技术系 滨州学院计算机科学技术系 滨州学院计算机科学技术系 第七章 图 有向无环图的应用 本讲内容 有向无环图的概念 有向无环图的应用 拓扑排序 关键路径 举例: 一个计算机应用技术专业的学生必须学习的基础课程有: 有向无环图的应用一------拓扑排序 课程代号 课程名称 先修课程 C1 高等数学 无 C2 程序设计 无 C3 离散数学 C1 C4 数据结构 C2 C3 C5 编译原理 C2 C4 C6 操作系统 C4 C7 C7 计算机组成原理 C2 c1 c3 c4 c2 c7 c6 c5 c1 c3 c2 c4 c7 c6 c5 c2 c7 c1 c3 c4 c5 c6 用顶点表示活动,用弧表示活动间的优先关系的有向图称为Activity On Vertex Network(AOV-网) 前驱、后继、直接前驱、直接后继 学习顺序: 拓扑排序 按照有向图给出的次序关系,由一个偏序得到一个全序,由此所得顶点的线性序列称之为拓扑有序序列。 假设以有向图表示一个工程的施工图或程序的数据流图(AOV网),则图中不允许出现回路。 检查有向图中是否存在回路的方法之一,是对有向图进行拓扑排序。 拓扑排序的作用 例如:对于下列有向图 B D A C 可求得拓扑有序序列: A B C D 或 A C B D B D A C 反之,对于下列有向图 不能求得它的拓扑有序序列。 因为图中存在一个回路 {B, C, D} 如何进行拓扑排序? 1、从有向图中选取一个没有前驱 的顶点,并输出之; 重复上述两步,直至图空,或者图不空但找不到无前驱的顶点为止。 2、从有向图中删去此顶点以及所 有以它为尾的弧; 拓扑排序算法 举例 A B D C E 总是删除入度为0的顶点并输出之。 注意:拓扑排序的结果不一定是唯一的。 拓扑排序算法描述 Status ToplogicalSort(Graph G){ // 对邻接表存储的图G进行拓扑排序,若无回路输出 //其顶点的一个拓扑序列并返回OK,否则返回ERROR FindInDegree(G, indegree); //生成顶点入度数组indegree[ ] InitStack( S ); for(i=0; iG.vexnum; i++) if ( !indegree[i] ) Push(S, i); //入度为零者入栈 count = 0; //对输出顶点计数 while(!StackEmpty(S)) { pop(S, i); print( i, G.vertices[i].data ); ++count; //输出顶点并计数 for( p = G.vertices[i].firstarc; p; p=p-nextarc){ k = p-adjvex; if( !(--indegree[k]) ) Push( S, k ); //对顶点i的邻接点的入度减1并入度为零者入栈 }//for }//while if( countG.vexnum ) return ERROR; else return OK; } 有向无环图的应用二------关键路径 实际问题: 假设以有向网表示一个施工流图,弧上的权值表示完成该项子工程(工序)所需时间。 问:1) 整个工程完工至少需要多长时间? 2) 哪些子工程是影响工程进度的关键? 概念: AOE网:如果在无环的带权有向图中 用弧表示一个工程中的各项活动(Activity),用弧上的权值表示活动的持续时间(Duration), 用顶点表示事件(Event), 则这样的有向图叫做用边表示活动的网络,简称AOE (Activity On Edges)网。 有向无环图的应用二------关键路径 概念: 源点:入度为零的点,即工程的开始点,在正常情况下只有一个。 汇点:出度为零的点,即工程的完成点,在正常情况下只有一个。 在AOE网络中, 有些活动顺序进行,有些活动并行进行;如图所示: 事件i发生后,其后继活动a( i, *)都可以开始 只有所有先导活动a(*, j)都结束后,事件j才 发生。 i j a(i,*) a(*,j) a(i,j) AOE网的特点

文档评论(0)

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

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

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档