数据结构有向无环图及其应用.ppt
《数据结构有向无环图及其应用.ppt》由会员分享,可在线阅读,更多相关《数据结构有向无环图及其应用.ppt(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、有向无环图及其应用一、定义一、定义 一个无环的有向图称为有向无环图,简写为DAG(directed acycline graph)。与有向二叉树相比,有向无环图是更一般的特殊有向图。实例:有向树有向无环图有向图 教材179页给出了有向无环图的一个简单应用:用有向无环图描述算术表达式。二、拓扑排序二、拓扑排序1.引例:现有计算机课程12门,如下表所示:课程编号课程名称先修课程c1程序设计基础无c2离散数学c1c3数据结构c1,c2c4汇编语言c1c5语言的设计和分析c3,c4c6计算机组成原理c11c7编译原理c5,c3c8操作系统c3,c6c9高等数学无c10线性代数c9c11普通物理c9c1
2、2数值分析c9,c10,c1c1c9c4c2c12c10c11c3c5c6c7c8二、拓扑排序二、拓扑排序c1c9c4c2c12c10c11c3c5c6c7c82.拓扑排序:偏序是指集合中仅有部分元素可比较大小(或先后);全序是指集合中所有元素均可比较大小(或先后)。二、拓扑排序二、拓扑排序c1c9c4c2c12c10c11c3c5c6c7c82.拓扑排序:拓扑排序是指将一个偏序关系转化为全序关系的过程的特殊操作。二、拓扑排序二、拓扑排序c1c9c4c2c12c10c11c3c5c6c7c83.方法:在有向图中选择一个没有前驱(即入度为0)的顶点并输出之。在有向图中删除刚刚输出的顶点及所有以该
3、顶点为尾的弧。图中若不再有入度为0的顶点,则结束;否则转。二、拓扑排序二、拓扑排序c1c9c4c2c12c10c11c3c5c6c7c83.方法:c1拓扑序列:c2 c3 c4 c5 c7 c9 c10 c11 c6 c12 c8二、拓扑排序二、拓扑排序3.方法:c1拓扑序列:c2 c3 c4 c5 c7 c9 c10 c11 c6 c12 c8注意1:从某种意义下来说,拓扑排序的结果是不唯一的。注意2:这种以顶点表示活动的有向无环图称为活动在顶点的网,简称AOV(Activity On Vertex Network)网。二、拓扑排序二、拓扑排序4.算法说明:为了使说明过程简单起见,我们以下图
4、为例:v10v21v32v43v65v54G.vertices0v1321G.vertices1v2G.vertices2v341G.vertices3v44G.vertices4v5G.vertices5v643datafirstarcadjvex nextarc另外增设一个存放各顶点的入度值的一维数组indegree:indegree0.5021230 0 1 2 3 4 5二、拓扑排序二、拓扑排序4.算法说明:为了使说明过程简单起见,我们以下图为例:v10v21v32v43v65v54G.vertices0v1321G.vertices1v2G.vertices2v341G.vertic
5、es3v44G.vertices4v5G.vertices5v643另外增设一个存放各顶点的入度值的一维数组indegree:indegree0.5021230 0 1 2 3 4 5求求indegree一维数组初值的程序:一维数组初值的程序:FindInDegree(ALGraph G,indegree0.G.vexnum-1 for(i=0;iadjvex;+indegreek;p=p-nextarc;/FindInDegree二、拓扑排序二、拓扑排序4.算法说明:为了使说明过程简单起见,我们以下图为例:v10v21v32v43v65v54G.vertices0v1321G.vertice
6、s1v2G.vertices2v341G.vertices3v44G.vertices4v5G.vertices5v643另外增设一个存放各顶点的入度值的一维数组indegree:indegree0.5021230 0 1 2 3 4 5拓扑排序算法思想:拓扑排序算法思想:设一个栈设一个栈S,入度为,入度为0的顶点的序的顶点的序号进栈。如号进栈。如0,5 进栈。进栈。count=0(打打印顶点个数计数器印顶点个数计数器)。当栈当栈S不空时,出栈一个元素并不空时,出栈一个元素并打印相应顶点;打印相应顶点;count加加1。该顶点的所有邻接点的入度减该顶点的所有邻接点的入度减1,减减1后入度为后入
7、度为0的顶点的序号进栈。的顶点的序号进栈。重复第二步,直至栈空时转重复第二步,直至栈空时转。若若count=G.vexnum,则拓扑排序则拓扑排序成功;否则图中必有环路,拓扑排成功;否则图中必有环路,拓扑排序失败。序失败。二、拓扑排序二、拓扑排序4.算法说明:为了使说明过程简单起见,我们以下图为例:v10v21v32v43v65v54G.vertices0v1321G.vertices1v2G.vertices2v341G.vertices3v44G.vertices4v5G.vertices5v643另外增设一个存放各顶点的入度值的一维数组indegree:indegree0.5021230
8、 0 1 2 3 4 550s二、拓扑排序二、拓扑排序4.算法说明:为了使说明过程简单起见,我们以下图为例:v10v21v32v43v65v54G.vertices0v1321G.vertices1v2G.vertices2v341G.vertices3v44G.vertices4v5G.vertices5v643另外增设一个存放各顶点的入度值的一维数组indegree:indegree0.5021230 0 1 2 3 4 50s5打印G.vertices5.data4号和3号顶点的入度分别减1二、拓扑排序二、拓扑排序4.算法说明:为了使说明过程简单起见,我们以下图为例:v10v21v32v
9、43v65v54G.vertices0v1321G.vertices1v2G.vertices2v341G.vertices3v44G.vertices4v5G.vertices5v643另外增设一个存放各顶点的入度值的一维数组indegree:indegree0.5021120 0 1 2 3 4 50s二、拓扑排序二、拓扑排序4.算法说明:为了使说明过程简单起见,我们以下图为例:v10v21v32v43v65v54G.vertices0v1321G.vertices1v2G.vertices2v341G.vertices3v44G.vertices4v5G.vertices5v643另外增
10、设一个存放各顶点的入度值的一维数组indegree:indegree0.5021120 0 1 2 3 4 5 s0打印G.vertices0.data3号、2号、1号顶点的入度分别减1二、拓扑排序二、拓扑排序4.算法说明:为了使说明过程简单起见,我们以下图为例:v10v21v32v43v65v54G.vertices0v1321G.vertices1v2G.vertices2v341G.vertices3v44G.vertices4v5G.vertices5v643另外增设一个存放各顶点的入度值的一维数组indegree:indegree0.5010020 0 1 2 3 4 523s二、拓
11、扑排序二、拓扑排序4.算法说明:为了使说明过程简单起见,我们以下图为例:v10v21v32v43v65v54G.vertices0v1321G.vertices1v2G.vertices2v341G.vertices3v44G.vertices4v5G.vertices5v643另外增设一个存放各顶点的入度值的一维数组indegree:indegree0.5010020 0 1 2 3 4 523s二、拓扑排序二、拓扑排序4.算法说明:为了使说明过程简单起见,我们以下图为例:v10v21v32v43v65v54G.vertices0v1321G.vertices1v2G.vertices2v3
12、41G.vertices3v44G.vertices4v5G.vertices5v643另外增设一个存放各顶点的入度值的一维数组indegree:indegree0.5010020 0 1 2 3 4 5 3s2打印G.vertices2.data4号、1号顶点的入度分别减1二、拓扑排序二、拓扑排序4.算法说明:为了使说明过程简单起见,我们以下图为例:v10v21v32v43v65v54G.vertices0v1321G.vertices1v2G.vertices2v341G.vertices3v44G.vertices4v5G.vertices5v643另外增设一个存放各顶点的入度值的一维数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 无环图 及其 应用
限制150内