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