分享
分享赚钱 收藏 举报 版权申诉 / 28

类型aov网和拓扑排序.ppt

  • 上传人:11xg27ws
  • 文档编号:6938492
  • 上传时间:2019-04-28
  • 格式:PPT
  • 页数:28
  • 大小:2MB
  • 配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    aov网和拓扑排序.ppt
    资源描述:

    1、第七章 图(续),有向无环图 及应用,有向无环图的定义 有向图中是否有环的检查 有向无环图的应用:工程能否顺利进行拓扑排序估算完成工程的最短时间关键路径,有向无环图,有向无环图(DAG图):没有回路(环)的有向图。,有向无环图,有向图(有环),一、AOV-网(Activity On Vertices),表示工程的有向图中,用顶点表示活动,用有向边表示活动Vi 必须先于活动Vj 进行。这种有向图叫做顶点表示活动的AOV网络。 (用顶点表示活动,弧表示活动间的优先关系的有向图),在AOV网络中不能出现有向回路(即有向环)。 若出现了有向环,则意味着某项活动应以自己作为先决条件。因此,对给定的AOV

    2、网络,必须先判断它是否存在有向环。,检查有向图中是否存在回路的方法之一,是对有向图进行拓扑排序.。,何谓“拓扑排序”?,对有向图进行如下操作:,按照有向图给出的次序关系,将图中顶点排成一个线性序列,对于有向图中没有限定次序关系的顶点,则可以人为加上任意的次序关系。,由此所得顶点的线性序列称之为拓扑有序序列.,拓扑排序是对有向无环图的顶点的一种排序 。,拓扑排序 举例,课程编号 课程名称 先修课程 C1 高等数学 无C2 程序设计基础 无C3 离散数学 C1, C2 C4 数据结构 C3, C2C5 高级语言程序设计 C2C6 编译方法 C5, C4C7 操作系统 C4, C9C8 普通物理 C

    3、1C9 计算机原理 C8,表示教学计划(课程之间)的优先关系有向图,对图进行拓扑排序, 得到的拓扑有序序列为C1 , C2 , C3 , C4 , C5 , C6 , C8 , C9 , C7,或 C1 , C8 , C9 , C2 , C5 , C3 , C4 , C7 , C6,构造拓扑有序序列,即将各个顶点 (代表各个活动)排列成一个线性有序的序列,使得AOV网络中所有应存在的前驱和后继关系都能得到满足。,构造AOV网络全部顶点的拓扑有序序列的运算称为拓扑排序。,如果通过拓扑排序能将AOV网络的所有顶点都排入一个拓扑有序的序列中, 则该网络中必定不会出现有向环。,如果AOV网络中存在有向

    4、环,此AOV网络所代表的工程是不可行的。,拓扑排序方法, 重复以上 、步, 直到全部顶点均已输出,拓扑有序序列形成,拓扑排序完成;或图中还有未输出的顶点, 但已跳出处理循环。说明图中还剩下一些顶点, 它们都有直接前驱。这时网络中必存在有向环。, 输入AOV网络;, 在AOV网络中选一个没有直接前驱的顶点, 并输出之;, 从图中删去该顶点, 同时删去所有它发出的有向边;,a,b,h,c,d,g,f,e,得到的拓扑有序序列满足图中给出的所有前驱和后继关系。,如何在计算机上实现 对有向图的拓扑排序?,?,在算法中需要用定量的描述替代定性的概念,没有前驱的顶点 入度为零的顶点,删除顶点及以它为尾的弧

    5、弧头顶点的入度减1,拓扑排序算法,拓扑排序方法,拓扑排序过程中涉及的数据和操作:,(1) 选择一入度为0顶点v,输出;,(2) 将v邻接到的顶点的入度减1;,(3)重复(1)、(2), 直到输出全部顶点,或,有向图没有入度为0的顶点。,数据:有向图、顶点的入度;,操作: (1) 选择一入度为0顶点v,输出; (2) 将v邻接到的顶点 u 的入度减1。,为算法的有关数据选择设计存储结构(图用邻接表表示),数组indegree:记录各顶点入度,对于入度为零的顶点即无前驱顶点,删除该顶点及以它为尾的弧的操作,则可换以弧头顶点的入度减1来实现。,栈S:存储入度为0的顶点的编号.,初始时,只有v2,v4

    6、 两顶点的入度为0,为避免每次都要搜索入度为零的顶点,在算法中设置一个“栈”,以保存“入度为零”的顶点。,如果输出顶点个数少于AOV网络的顶点个数, 则报告网络中存在有向环。,拓扑排序算法描述:,建立入度为零的顶点栈;,当入度为零的顶点栈不空时, 重复执行:,从顶点栈中退出一个顶点, 并输出之;,从AOV网络中删去这个顶点和它发出的边, 边的终顶点入度减1;,如果边的终顶点入度减至0, 则该顶点进入度为零的顶点栈。,Status TopologicalSort(ALGraph G) /若G无回路,则输出G的顶点的一个拓扑序列并返回OK,否则ERRORFindInDegree(G, indegr

    7、ee); /求各顶点入度indegree0vexnum-1InitStack(S);for(i=0; iG. vexnum; +i)if (! indegreei) Push(S, i); /入度为0顶点的下标进栈count = 0; /对输出顶点计数,1 3 0 1 0 3,while(! StackEmpty(S) Pop(S, i); printf(i, G. verticesi.data); +count; for (p=G.verticesi.firstarc; p; p=p-nextarc) k = p-adjvex; if ( !(- -indegreek) ) Push(S,

    8、k); /for /while,i=4,4, C4,count=1,p,k=0,0,0,k=1,2,k=5,2,p=NULL,while(! StackEmpty(S) Pop(S, i); printf(i, G. verticesi.data); +count; for (p=G.verticesi.firstarc; p; p=p-nextarc) k = p-adjvex; if ( !(- -indegreek) ) Push(S, k); /for /while,i=0,0, C0,count=2,p,k=1,1,3,k=3,0,p=NULL,while(! StackEmpty(

    9、S) Pop(S, i); printf(i, G. verticesi.data); +count; for (p=G.verticesi.firstarc; p; p=p-nextarc) k = p-adjvex; if ( !(- -indegreek) ) Push(S, k); /for /while,i=3,3, C3,count=3,p,p=NULL,while(! StackEmpty(S) Pop(S, i); printf(i, G. verticesi.data); +count; for (p=G.verticesi.firstarc; p; p=p-nextarc)

    10、 k = p-adjvex; if ( !(- -indegreek) ) Push(S, k); /for /while,i=2,2, C2,count=4,p,k=1,0,1,k=5,1,p=NULL,while(! StackEmpty(S) Pop(S, i); printf(i, G. verticesi.data); +count; for (p=G.verticesi.firstarc; p; p=p-nextarc) k = p-adjvex; if ( !(- -indegreek) ) Push(S, k); /for /while,i=1,1, C1,count=5,p,

    11、k=5,0,5,p=NULL,while(! StackEmpty(S) Pop(S, i); printf(i, G. verticesi.data); +count; for (p=G.verticesi.firstarc; p; p=p-nextarc) k = p-adjvex; if ( !(- -indegreek) ) Push(S, k); /for /while,i=5,5, C5,count=6,p,p=NULL,拓扑序列:C4, C0, C3, C2, C1, C5,Status TopologicalSort(ALGraph G) FindInDegree(G, indegree); /求各顶点入度indegree0vexnum-1InitStack(S);for(i=0; inextarc) k = p-adjvex; if ( !(- -indegreek) ) Push(S, k); /对i号顶点邻接到的 每个顶点入度减1/若入度减为0,则入栈/for /whileif (countG.vexnum) return ERROR; /该有向图有回路else return OK; /TopologicalSort,/输出i号顶点的数据,并计数,/从零入度顶点栈S 栈顶,获得一入度为零的顶点i,count=6,自测题 AOV-网的拓扑排序,

    展开阅读全文
    提示  道客多多所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:aov网和拓扑排序.ppt
    链接地址:https://www.docduoduo.com/p-6938492.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    道客多多用户QQ群:832276834  微博官方号:道客多多官方   知乎号:道客多多

    Copyright© 2025 道客多多 docduoduo.com 网站版权所有世界地图

    经营许可证编号:粤ICP备2021046453号    营业执照商标

    1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png 10.png



    收起
    展开