ImageVerifierCode 换一换
格式:PPT , 页数:46 ,大小:1.73MB ,
资源ID:2646249      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2646249.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(拓扑排序.ppt)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

拓扑排序.ppt

1、数据结构与算法-第二十一讲北方民族大学计算机科学与工程学院王伦津 研究员拓扑排序的概念以及算法实现拓扑排序的概念以及算法实现21、拓扑排序的概念以及拓扑排序、拓扑排序的概念以及拓扑排序的算法实现的算法实现掌握拓扑排序的概念,拓扑排序的掌握拓扑排序的概念,拓扑排序的算法与实现,学会在算法与实现,学会在AOV和和AOE网网上的应用上的应用目目录录21.121.1拓扑排序拓扑排序 21.1.121.1.1拓扑序列与拓扑序列与AOVAOV网网 21.1.221.1.2拓扑排序算法与实现拓扑排序算法与实现21.2 AOE21.2 AOE网与关键路径网与关键路径 21.2.1 AOE21.2.1 AOE网

2、与关键路径的概念网与关键路径的概念 21.2.2 21.2.2 关键路径的识别关键路径的识别21.121.1拓扑排序拓扑排序拓扑排序是定义在有向图上的一种操作,拓扑排序是定义在有向图上的一种操作,目的是目的是根据结点间的关系求得结点的一个线性排列根据结点间的关系求得结点的一个线性排列(这点(这点与遍历操作的目的类似)。这种操作在有关工程进与遍历操作的目的类似)。这种操作在有关工程进度度/次序规划之类问题中,有着大量应用。一般的次序规划之类问题中,有着大量应用。一般的大型工程,都可以划分为多个工序大型工程,都可以划分为多个工序/步骤步骤/子工程,子工程,这些工序有的可独立进行,但大多数和其他工序

3、关这些工序有的可独立进行,但大多数和其他工序关联,即某工序的进行,要等到其他一些工序的完成联,即某工序的进行,要等到其他一些工序的完成才能开始。这类问题都可归结到拓扑排序。才能开始。这类问题都可归结到拓扑排序。21.1.121.1.1拓扑序列与拓扑序列与AOV网网对有向图对有向图G,若它的一个结点序列,若它的一个结点序列LS:v1,v2,.,vn满足这样的条件:满足这样的条件:是是G的边时,在的边时,在LS中中vi位于位于vj之前,否则之前,否则(不是边时)在不是边时)在LS中中vi与与vj的前的前后次序任意,后次序任意,则称则称LS为图为图G的一个拓扑序列,的一个拓扑序列,求拓扑序列的操作称

4、为求拓扑序列的操作称为拓扑排序(拓扑排序(TopologicalSorting)。)。从从代代数数结结构构角角度度来来看看,拓拓扑扑排排序序是是由由某某集集合合上上的的一一个个偏偏序序关关系系得得到到一一个个全全序序关关系系的的操操作作。若若将将集集合合中中结结点点作作为为图图结结点点,将将它它上上的的偏偏序序关关系系作作为为图图的的边边,则则任任一一偏偏序序关关系系均均可可表表示示为为一一个个有向图。有向图。显然,显然,某一图的拓扑序列可能不唯一。某一图的拓扑序列可能不唯一。拓拓扑扑排排序序主主要要用用在在一一类类称称为为AOV网网(Activityon Vertexnetworks)的的有

5、有向向图图中中。AOV网网是是给给有有向向图图的的结结点点与与边边赋赋予予一定的语义的图,具体地:一定的语义的图,具体地:结点结点代表活动。如工程中的工序代表活动。如工程中的工序/子任务、状态等子任务、状态等 边边代代表表活活动动之之间间的的进进行行次次序序。边边表表示示活活动动i先先于于j进进行。行。AOV网网常常用用来来表表达达流流程程图图,如如一一个个工工程程中中各各子子任任务务间间的的流流程程图图、产产品品生生产产加加工工流流程程图图、程程序序流流程程图图、信信息息(数数据据)流流程程图图、活动安排流程图等。活动安排流程图等。例例21 1学生的选课次序就是一个学生的选课次序就是一个AO

6、V网应用问题。网应用问题。假定某计算机专业的主要课程如图假定某计算机专业的主要课程如图21 1(左左)所示,所示,则对应的则对应的AOV网如图网如图21 1(右右)所示。所示。图图21 1(右右)可有多个拓扑序列,下面给出了可有多个拓扑序列,下面给出了它的两个不同的拓扑序列:它的两个不同的拓扑序列:12346105978111234610579811如果图中两个结点之间均没有通路,那么称它如果图中两个结点之间均没有通路,那么称它们是可并行的。在一个拓扑序列中,如果某子串们是可并行的。在一个拓扑序列中,如果某子串(序列中某一段)中的各结点之间均是可并行的,(序列中某一段)中的各结点之间均是可并行

7、的,则称该段为一个并行段(组)。一个可并行组包含则称该段为一个并行段(组)。一个可并行组包含了所有的可并行结点,则称该组为最大并行段(组)了所有的可并行结点,则称该组为最大并行段(组)。找出最大并行组的工作称为并行识别。找出最大并行组的工作称为并行识别。1012396457811 课程编号课程编号课程名称课程名称先行课先行课1高等数学高等数学-2离散数学离散数学-3高级语言高级语言-4数据结构数据结构3,25操作系统操作系统4,66计算机组成原理计算机组成原理27数据库原理数据库原理58编译原理编译原理4,79计算机网络计算机网络5,110人工智能原理人工智能原理1,2,311软件工程软件工程

8、79图图211课程表(左)对应的课程表(左)对应的AOV网(右)网(右)并并行行组组具具有有重重要要的的实实际际意意义义。位位于于同同一一组组的的各各结结点点代代表表的的活活动动可可以以同同时时进进行行,以以缩缩短短整整个个事事务务的的完完成成时时间间。例例如如,对对选选课课问问题题,如如果果采采用用串串行行修修课课方方式式,则则可可完完全全按按拓拓扑扑序序列列进进行行,但但若若要要在在一一段段时时间间内内同同时时修修多多门门课课,这这就就需需识识别别出出哪哪些些课课可可同同时时修修,这这是是一一个个并并行行识识别别问问题题。同同一一并并行行组组内内的的课课程程可可以以同同时时修修学学。例例如

9、如,在在图图211中中,可可并并行行的的课课程程组组有有(1,2,3)、(4,6,10)、(5)、(9,7)、(8,11)。但但注注意意,这这些些组组之之间间还还是是有有序序的的(这这几几个个组组的的次序为它们的出现次序)。次序为它们的出现次序)。并并不不是是所所有有的的有有向向图图都都可可以以进进行行拓拓扑扑排排序序。显显然然,若若图图中中每每个个结结点点都都有有前前驱驱,或或者者每每个个几几点点都都有有后后继继,则则该图是不可拓扑排序的。该图是不可拓扑排序的。21.1.221.1.2拓扑排序算法与实现拓扑排序算法与实现(一一)基本方法基本方法 这里,我们给出一种拓扑排序算法。该算法是简单而

10、直这里,我们给出一种拓扑排序算法。该算法是简单而直观的,实质上属于广度优先遍历,因此称为广度优先拓扑观的,实质上属于广度优先遍历,因此称为广度优先拓扑排序算法。该算法包含下列几个步骤:排序算法。该算法包含下列几个步骤:1从有向图中找一个没有前趋的结点从有向图中找一个没有前趋的结点v,若,若v不存在,不存在,则表明不可进行拓扑排序(图中有环路),结束(不完全则表明不可进行拓扑排序(图中有环路),结束(不完全成功);成功);2将将v输出;输出;3将将v从图中删除,同时删除关联于从图中删除,同时删除关联于v的所有的边的所有的边4若图中全部结点均已输出,则结束(成功),否则若图中全部结点均已输出,则结

11、束(成功),否则转转1继续进行。继续进行。1012396457811109645781195781197811118逐次去掉没有前趋的结点逐次去掉没有前趋的结点的过程的过程图图21-20110111011011011100110010001101110110110111001100100课程表课程表AOE网的邻接矩网的邻接矩阵,它的列全为阵,它的列全为0的点,的点,就是无前趋的点,取出就是无前趋的点,取出该点该点删除该点对应的列和行,矩删除该点对应的列和行,矩阵的阶数减阵的阶数减1,再发现新的,再发现新的全为全为0的列,同样办法处理,的列,同样办法处理,直至所有结点输出直至所有结点输出地址起

12、终权信息链a19bb110 c24dd26ee210 f34gg310 h45ii48 j57kk59 l65 m78nn711 o911 9b10 4d6e4g5ia1c2f3h4j5510 8n11 11 l6m78o91010 7k81191a02c03f04h25j26l17m18 29o210 311 2增加一列,表示增加一列,表示各点的入度各点的入度先扫描入度为先扫描入度为0的结的结点,将其取出,然后点,将其取出,然后删除与其有链接的边。删除与其有链接的边。同时减少对应边终点同时减少对应边终点的入度。例中删除的入度。例中删除1、2、3点后结点点后结点4的入的入度减度减2为为0,结点

13、,结点6的的入度减入度减1为为0,结点,结点9的入度减的入度减1,节电,节电10的入度减的入度减3。结点。结点4、6、10成为新的入度成为新的入度为为0的结点的结点1a02c03f04h05j26l07m18 29o110 011 2此方法的正确性是显然的。此方法的正确性是显然的。通通过过对对此此方方法法做做适适当当扩扩充充,就就可可在在求求拓拓扑扑序序列列的的过过程程中中标标识识出出可可并并行行活活动动(结结点点)。具具体体做做法法是是,初初始始时时将将所所有有无无前前趋趋结结点点标标为为一一组组可可并并行行结结点点。然然后后,每每次次执执行行步步骤骤3后后,将将新新产产生生的的无无前前趋趋

14、结结点点标标为为新新的的一一组组可可并并行行结结点点。为为了了将将同同组组并并行行结结点点连连续续排排列列,在在步步骤骤1中中应应优优先先选选取取并并行行组组号号与与上上次次选选择择结结点点的的并并行行组组号相同的结点(若有的话)。号相同的结点(若有的话)。UU对对拓拓扑扑排排序序,还还有有一一种种算算法法,称称为为深深度度优优先先拓拓扑扑排排序序。它它的的基基本本思思想想是是先先输输出出无无后后继继的的结结点点,即即对对每每个个结结点点v,检检查查先先一一次次递递归归地地求求出出v的的每每个个后后继继的的拓拓扑扑序序列列(各各序序列列连连接接在在一一起起),然然后后将将v插插入入到到该该拓拓

15、扑扑序序列列的的最最前前面面。关关于于具具体体的的程程序序实实现现,留留作作练习练习。(二二)数据结构的选取数据结构的选取为了方便拓扑排序的实现,需对前面介绍过的图的存贮结为了方便拓扑排序的实现,需对前面介绍过的图的存贮结构做些扩充。单纯从进行拓扑排序来讲,图采用邻接表较为构做些扩充。单纯从进行拓扑排序来讲,图采用邻接表较为方便,所以这里只考虑邻接表的情况。方便,所以这里只考虑邻接表的情况。从前面给出的拓扑排序基本方法看,拓扑排序涉及的基从前面给出的拓扑排序基本方法看,拓扑排序涉及的基本操作有:本操作有:n n判别某结点是否有前趋;判别某结点是否有前趋;n n删除一个无前趋结点及其关联的边。删

16、除一个无前趋结点及其关联的边。为此,我们为每个结点设一个入度域。结点入度大于为此,我们为每个结点设一个入度域。结点入度大于0时时表示有前趋,否则无前趋。对于删除,其真正目的也不是删表示有前趋,否则无前趋。对于删除,其真正目的也不是删除,而是为了通知出点:对应的一个前驱已处理完。因此,除,而是为了通知出点:对应的一个前驱已处理完。因此,删除某结点时,只需对该结点的各直接可达邻接点(出点)删除某结点时,只需对该结点的各直接可达邻接点(出点)的入度分别减的入度分别减1。为了方便找到尚未输出的无前趋结点,将它们统一存放在为了方便找到尚未输出的无前趋结点,将它们统一存放在一个栈中。每次执行入度减一个栈中。每次执行入度减1(即删除一边)操作后,若有结(即删除一边)操作后,若有结点入度变为点入度变为0,则将它放入栈中。每次选择无前趋结点时,也,则将它放入栈中。每次选择无前趋结点时,也是从栈中提取。是从栈中提取。为为此此,邻邻接接表表的的图图结结点点的的定定义义中中需需设设置置入入度度域域,我我们们将前面给出的将前面给出的TGraphNodeAL定义修改为:定义修改为:templatestructTG

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1