拓扑排序和关键路径.ppt
《拓扑排序和关键路径.ppt》由会员分享,可在线阅读,更多相关《拓扑排序和关键路径.ppt(49页珍藏版)》请在三一办公上搜索。
1、1,Essential of Lecture Sixteen:,一、拓扑排序 二、关键路径,第十六讲,2,一、有向无环图及其应用,有向无环图:没有回路的有向图,(a)有向树(b)有向无环图(c)有向图,问题:判断一个有向图是否为有向无环图的方法是?,3,一、有向无环图及其应用,应用:工程流程、生产过程中各道工序的流程、程序流程、课程的流程。对整个工程和系统,人们关心的问题是:(1)工程能否顺利进行,,即工程流程是否“合理”;(2)完成整项工程至少需要多少时间,哪些子工程是影响工程进度的关键子工程。,(1)拓扑排序(2)关键路径,4,一、有向无环图及其应用,AOV网(activity on ve
2、rtex network)用顶点表示活动,边表示活动的顺序关系。,为求解工程流程是否“合理”,通常用AOV网的有向图表示工程流程。,1、拓扑排序,5,某工程可分为6个子工程,若用顶点表示子工程(也称活动),用弧表示子工程间的顺序关系。工程流程可用如下AOV网表示:,例,一、有向无环图及其应用,6,一、有向无环图及其应用,例 2:计算机专业学生的学习就是一个工程,每一门课程的学习就是整个工程的一些活动。其中有些课程要求先修课程,有些则不要求。这样在有的课程之间有领先关系,有的课程可以并行地学习。,例,7,例 2:课程流程图,8,一个可行的施工计划为:A,B,C,D,E,F 一个可行的学习计划为:
3、C1,C9,C4,C2,C10,C11,C12,C3,C6,C5,C7,C8 可行的计划的特点:若在流程图中顶点v是顶点u 的前趋,则在计划序列中顶点v 也是u的前趋。,一、有向无环图及其应用,9,一、有向无环图及其应用,拓扑排序(TopologicalSort),按照有向图给出的次序关系,将图中顶点排成一个线性序列,对于有向图中没有限定次序关系的顶点,则可以人为加上任意的次序关系,由此所得顶点的线性序列称之为拓扑有序序列,10,例如:对于下列有向图,可求得拓扑有序序列:A B C D 或 A C B D,11,B,D,A,C,反之,对于下列有向图,不能求得它的拓扑有序序列。,因为图中存在一个
4、回路 B,C,D,12,一、有向无环图及其应用,拓扑排序方法:第一步:在有向图选一无前趋的顶点v,输出;第二步:从有向图中删除v及以v为尾的孤;重复第一步和第二步,直到输出全部顶点或有向图中不存在无前趋顶点(此时图中存在环)。,13,拓扑序列:开始,(0),14,15,16,(7),17,18,拓扑序列:C1-C2-C3-C4-C5-C7-C9-C10-C11-C6-C12-C8或:C9-C10-C11-C6-C1-C12-C4-C2-C3-C5-C7-C8,一个AOV网的拓扑序列不是唯一的,19,a,b,c,g,h,d,f,e,a,b,h,c,d,g,f,e,20,一、有向无环图及其应用,(
5、1)选择一入度为 0 顶点 v,输出;(2)将 v 邻接到的顶点的入度减1;(3)重复12,直到输出全部顶点或图中没有入度为0的顶点;拓扑排序涉及的数据和操作:数据:有向图,顶点的入度;操作:(1)选择一入度为 0 顶点v,输出;(2)将 v 邻接到的顶点 u 的入度减1;,拓扑排序算法,21,设计数据结构,1.图的存储结构:采用邻接表存储,在顶点表中增加一个入度域。顶点表结点,2.栈S:存储所有无前驱的顶点。思考:可以用队列吗?,AOV网应用:拓扑排序,22,(a)一个AOV网(b)AOV网的邻接表存储,012345,in vertex firstarc,3 A 0 B1 C3 D0 E2
6、F,0,3,0,0,5,2,3,3,5,拓扑排序,AOV网应用:拓扑排序,23,拓扑排序,012345,in vertex firstarc,3 A 0 B 1 C 3 D 0 E 2 F,0,3,0,0,5,2,3,3,5,B,E,AOV网应用:拓扑排序,24,拓扑排序,012345,in vertex firstarc,3 A 0 B 1 C 3 D 0 E 2 F,0,3,0,0,5,2,3,3,5,B,E,0,C,2,1,AOV网应用:拓扑排序,25,拓扑排序,012345,in vertex firstarc,3 A 0 B 0 C 2 D 0 E 1 F,0,3,0,0,5,2,3
7、,3,5,B,C,2,1,AOV网应用:拓扑排序,26,拓扑排序,012345,in vertex firstarc,2 A 0 B 0 C 1 D 0 E 1 F,0,3,0,0,5,2,3,3,5,B,D,0,1,AOV网应用:拓扑排序,27,拓扑排序,012345,in vertex firstarc,1 A 0 B 0 C 0 D 0 E 1 F,0,3,0,0,5,2,3,3,5,0,0,A,F,AOV网应用:拓扑排序,28,拓扑排序,012345,in vertex firstarc,0 A 0 B 0 C 0 D 0 E 0 F,0,3,0,0,5,2,3,3,5,A,F,AOV
8、网应用:拓扑排序,29,1.栈或队列S初始化;累加器count初始化;2.扫描顶点表,将没有前驱的顶点压栈或入队;3.当栈或队列S非空时循环 3.1 退出vj栈顶或队首元素;输出vj;累加器加1 3.2 将顶点vj的各个邻接点的入度减1;3.3 将新的入度为0的顶点入栈或入队;4.if(countvertexNum)输出有回路信息;,拓扑排序算法伪代码,AOV网应用:拓扑排序,作业:请编程求AOV网的拓扑排序。,30,template StatusCode TopSort(const AdjMatrixDirGraph/建立入度为0的顶点队列,31,while(!q.Empty()/队列非空i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 拓扑 排序 关键 路径
链接地址:https://www.31ppt.com/p-5735721.html