6.4.3 拓扑排序 番茄炒蛋工程

 

 

 

 

Q(`⌒´Q)վ'ᴗ' ի⊂(˃̶͈̀ε ˂̶͈́ ⊂ )加油

 

我们来学习图的第3个应用叫做兔排序,兔排序它常常用作在工程当中,它描述了工程当中每一个工程的活动之间的存在的这样一个传递性的关系,可能某一个活动只有在另一个活动结束之后才可以开始这样一种逻辑性的关系,那么我们来举一个小例子,例如我们学习课程的这个例子,我们在学习计算机基础课程之后,才可以开始成为摄影语言的学习,我们掌握了计算机基础和程序式语言才可以开始啊数据结构这门课的学习,那么我们只要学习了数据结构以及程序设计语言才可以去开始算法分析这门课程学习,那么这4门课程当中存在着这样的一个前序后续的这样传递性的关系,那么我们就利用了一个有向图的结构描述了这4种课程之间的传递性关系,我们如果按照他们可以发生顺序对它们进行程序的话。利用了一个有向图的结构,描述了这4种课程之间的垂线关系,我们如果按照它们可以发生顺序对它们进行程序的话,得到的这个序列其实就是我们今天所要讲述的这个不排序的序列噢,那么知道了兔排序大致描述的是什么?我们细致的看一下兔排序的相关定义,那么首先我们要了解有向无缓吐的,这个定义非常简单,其实啊不存在还的一个有效图,我们把它简称为da这一图,那么接着我们来看下一个定义叫做aov网差什么呢?它是用一个有效无环图表示一个工程起顶点,表示的是工程的活动,用这样一个有效边vI=g表示活动备案,先于活动为j进行的一个传递性关系,那么就例如我们刚刚所讲述的,只有学习了计算机基础才可以去学习程序设计语言这样传递性的关系这种。传递性关系,那么就比如我们刚刚所讲说的,只有学习了学习基础才可以去学习,写成这个世界语言这样传递性的关系,则将各种DNA称为顶点,表示我的网络那么记为aov网这里的aov,其实是一个英文缩写的,作者听一听啊,我探测那么是活动在节点上在顶点上的这么一个网,虽然它叫做网,但是我们发现了它边是没有权重的,那么它只是这样一种方式,之后我们还会学习一个叫做aoe网,只是我们把每个活动每个边。在酒店上的这么一个网,虽然它叫做网,但是我们发现了它边事没有权重的,那么它只是这样一种描述方式,之后我们还会学习一个叫做aoe网,则是我们把每个活动一个边来表示的这么一个网,然后本节课拓开虚假说的是有关aov的这样的一个网,那么什么是做培训呢?就是对daj所有顶点的一种排序,若存在一条从顶点a到顶点,b的路径,在排序中,b要排在a的后面,如何满足这样的条件,我们就称它为拓扑排序,大家注意的一点是,拓牌式的大前提一定是对daj这样一个有效无关图的一种排序,如果它是有环的或者它是5项的,都不存在对应到兔排序,然后这就是有关兔排序的几个概念,那接下来我们再来看一下,这样对一个图进行完序,它的算法思想算法步骤是什么一步。土排序,然后这就是有关土排区的基本概念好,接下来我们就来看一下这一个图进行培训,那算法思想算法步骤是什么,第1步是从DJ图中选择一个,没有前确定点并输出,也就是找出一个入度为0的一个顶点把它输出,然后从开头中删除该节点,并且所与它为起点的相变,也就是删除该零点,并且删除他所有的出边,那么对于如果我们是连接表存储的话,则删除它的边边好,这是第2步,然后第3步则是重复12成过程,直到当前DNA图为空,或者当前图中不存在无浅区的顶点位置什么意思啊第一个所有的边和丁点b了,什么意思啊?第1个解除条件是DJ图为空,它非常好理解,其实是我们把所有的边和顶点都删除完毕了,所有定点都访问完毕了。也为止什么意思啊?第1个结束条件是DJ图为空,它非常好理解,其实我们把所有的边和顶点都删除完毕了,所有顶点都访问完毕了,那么第2种情况是什么意思呢?第2种情况是如果DJ图不为空,且当前图中不存在无前屈的顶点,就说明了该图中一定存在着环,它不是一个DJ图好,这就是思想思想非常简单好,接下来我们就来看一个小例子,帮助大家了解一下这样的算法实行过程,那么首先呢,我们知道每一次我们要删除的是顶点入度为0的哪一个顶点,那么我们所用了一个辅助数组来标记来存储了每个顶点当前的禄蠹,我们把它初始化为你的钉钉,一开始在邮箱图当中的露肚所以我们花了一帮他们然后。今天当前的路途,我们把它初始化为每个顶点,一开始在有象图当中的录度好,因为它有4个顶点,所以我们初始化了一个大小为4个数组,并把它们进行复制好,然后我们要在该数组当中找出为0的那一个下标,我们发现夏威威给我们的纸是不是wap啊?表示的姿势比钉钉点是没有入编的,此时我们则执行算法删除命令点输出,它并且还要删除噢,它对应到所有的初编,他伸出了两条边之后,我们发现我们对应的速度是不是要进行修改了,然后这就是修改之后的数字,我们依旧重复上述的过程,找说没领到的一个景点,发现一丁点是不是为零啊,所以依旧说出一点点,并且删除所有有关他的初变之后。他倒是出点,然后删除之后我们依旧要修改数组修改数组,我们发现二下标下的程是不是v02,所以然后我们要输出20点,并且与它相关的所有的出边好,你就要修改对应的数组,最后还剩3这个经典它对应的值为0,所以依旧要删除给顶点并且输出他,然后这样我们就得到了对应这个有向无环图的客户排序的排序序列0123我们利用了刚好我们所讲述的算法,实现了这两处排序的过程,好,这是一个DJ图的例子,其中没有环,那我们接下来我们来看一个存在款的例子,我们把盖子上图做出一定的修改,将从一指向三的这条腿相边修改为从三指向一,这样我们就得到了一个新的有效图,其中存在着123这样一个环状的一个结构。连接所有的出边,然后我们对数组当中值进行修改,我们发现此时是不是没有顶点,它的入度为点2,也就是我们所说的算法描述当中第3个步骤后一种结束的情况没有顶点不存在前驱,顶点没有顶点它的入度为0,那么此时我们就有这样的结论,若算法结束时,没有访问所有的顶点,则存在以剩下顶点组成的环,因为我们在刚刚举的这个例子当中,我们剩下了123这样三个顶点,那么我们则存在从一只像2×2×3再从三指向一打这样一个环,然后这就是两种意思,好接下来我们来看第3个小例子,也就是这样一个有香无缓图的例子,第1步也就是初始化对于每个顶点的入度。我们在第二故事先输出了第一顶点,那么第2种则是0213,我们在第2步时先输出了,二点点发现兔排序,它的结果是不是不一定唯一的呀?对于某一些有相关图,它的吐牌的序列可能有很多种好,这就是第3个小例子以及想要记录掉的一个点托盘式结果不一定为一好,接下来我们来看一下如何用语言来编写图排序的算法,这就是它的代码实现,我们来看一下每一个语句它有什么样的作用,首先我们要初始化一个占s,这样这样有什么作用呢?我们回忆第3个例子,在第3个例子当中,是不是它可能出现有两个录度为0的顶点啊?那么我们每次只能访问一个顶点,所以我们要通过这样一个战s来保存所有入度为0的顶点操作作用然后是一个循环语句操作作用然后是一个循环语句这个。第4档进行算法操作好,这就是展s的作用,然后是一个放循环语句,这个放循环语句子,是我们找出那个入度为点到那些顶点的过程,我们用一个放声环循环了,以顶个位数组这个以的刚刚用的那一个辅助数组,它保存了所有顶点,当前的入度,如果它的入度为l,我们所要把它进行压站操作,然后这就是第1个风循环的作用,接下来我们初始化了一个辅助变量,一个整形变样的探讨,它记录了当前我们访问的顶点的个数,然后这就是初始化的过程,接下来while循环语句则是循环我们之前所讲述的二三步骤,我们来看它的循环条件是判断该站是否为空,如果它为空的话,则我们要退出循环如果满足。速度为0,那停电了,然后如果满足该循环的条件,我们要执行循环体当中的内容,首先第1步是弹出阵地元素,弹出一个路途为0的顶点,然后我们要print数字来保存该厅店的编号,这样朋友的数组,它的作用则是保存后排序的排序序列,我们可以将它输出也可以用这样的数组来对它进行保存好,这就是第2条语句,然后则是一个放循环的过程,这个for循环其实是我们电力编表过程,那么我们在算法描述当中描述的是我们删除该定点以及它的编表,其实在我们具体的实验过程当中,我们并没有对它进行删除,只是遍历了编表,找出了所有的另一个端点,然后对它进行入读和修改首先想到一个变量我们这样对眼的他的头指针然后。那我们这样对应顶点的它的头指针,然后我们判断该节点是否为空,如果为空的话则表示便利便票结束,如果非空的话,则继续我们执行循环的过程,然后每次循环结束,我们要将p复制为下一个节点,在循环点当中则是有这样的过程,我们要用一个辅助变量,v保存当前bmail节点,它的内容也就是改编的电流端点,然后下面一个条件判断语句是什么意思呢?这个条件判断语句,我们实现了两个过程,我们来看,首先在条件判断当中有一个简简单单点塌落度数组保存的值,我们要对应将该值进行节点操作,因为我们相当于删除了他的这样一条路边然后什么过程的然后的值进行操作这样操作有什么作用呢该是后边的话,然后我们执行什么样的过程呢?然后我们对减减后的值进行取非操作这样操作有什么样的作用呢?若开始减1之后变为0的话,取非之后是不是就变为1了。这样操作有什么样的作用呢?若开始简易之后变为给人的话,取飞之后是不是就变为伊朗,那么变为一则表示判断条件为真,我们执行护士操作,也就是说如果该顶点的入舵为0的话,我们则要对它进行压站操作,把它压入到我们保存路途为零顶点的那个s站当中,好,这就是这样一个条件判断语句,其实我们实现了两个过程,第1步是修改对应integrate入度导数组的过程,第2步则是如果入度为0的话,我们想要把它压入到占中,还有这就是循环体,这样的内容我们对它执行,这样的循环过程就可以实现我们对引导图排序的算法。然后最后我们有一个条件判断语句,判断的则是结束的第2个条件,如果抗着时也就是访问点点数量小于该图当中点点数量并没有进行访问表示成了。并且并没有进行访问表示剩下顶点组成了一个合状结构,我们要为它是false的表示图排序失败,没有得到托盘学的序列,那么否则如果访问了所有顶点的话,所有者它是错的,表示我们得到了一个排序的序列,然后这就是怎么算法的过程,其实非常简单的调理也非常的清楚,就是将我们对算法描述的那几个步骤进行语言的实现,好,我们来分析一下它的时间复杂度,那么它的时间法则作为节俭的收养加上边的收养,为什么呢?因为我们要访问每一个顶点,然后访问每个顶点时,我们是不是要对它所有的边它的边表进行一个访问啊,因为我们修改对应的数组,所以它到实现复杂度为dov加e好,这就是托盘序的时间代码,那么托盘序其实也可以用dldfs来实现,它与df的实现代码非常的相似,只需要做出一些小的修改就可以了。去实现一下,然后这就是排序的实现代码号,那么最后我们再来了解一个有关注排序的小特点,就是落地接近正为三角区战的话,则存在土排序,反之不一定成立是给三角区站,指的是上下角或者是下线的去挣都是可以的,我们来看为什么有这样一个小结论的手相三小学上的例子,如果有一个这样的上司,他举证他是某一个有相同的邻接矩阵的话,则对应在该组当中每一条有相边都满足这样的条件,它的出示顶点的编号,a一定比中指的顶点编号j要小,因为在临街矩阵当中,是不是每一条出边的编号都要小于它路边的编号,所以说在代理程序当中,每一套相片都满足这样的特点,那么每一个路径当中的其实短点是不是也都要比它的终止短点的编号要小啊所以说一定没有。那么每一个路径当中的起始端点,是不是也都要比它的重视端点的编号要小啊,所以说在这个过程当中,肯定没有某一条路径是从编号大的顶点到编号小的顶点到,那么在干什么当中一定不存在魂状结构,所以它一定要拓扑排序的排序序列,这就是为什么我们有这样的特点,那么对应的下三角矩阵也存在着相同道理则是某一小组相变,它所有的其实顶点的编号一定都要比它的中式经典的变化要大,那么它所有的路径其实端点都要比它中式端点的变化要大,不存在环状的这样一个结构,所以它也已经存在错误排序的序列,那么为什么反之不一定成立呢?我们简单的举个小例子大家就明白了,那么大家在脑海当中简单的构造一个围墙图就可以了,比如说一个非常简单的例子,我们从零0点指向20点存在着这样一条有向边。比如说一个非常简单的例子,我们从明明点指向20点存在着这样一条有向边,然后从二零点指向一定点也存在着,这样交易层边,它是不是可以得到对应的topic是这样的,它是一个类似的线性的结构,那么在这里它对应的邻接矩阵是不是并不是一个三角矩阵啊?那么我们通过这个简单的小例子就知道为什么反之不一定成立了耗,这就是一个小的特点,一个小的结论,还有这就是本节课的全部内容。

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值