网站大量收购独家精品文档,联系QQ:2885784924

第7章 数据结构—图.ppt

  1. 1、本文档共81页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章 数据结构—图

数据结构 第7章 图 第8章 图 第7章 目录 7-1 图的定义和术语 7-2 图的存储表示 7-3 图的遍历 7-4 生成树和最小生成树 7-5 单源最短路径 7-6 AOV图与拓扑排序 7-7 AOE图与关键路径 实验7 图子系统 习题7 7-1 图的定义和术语 7-2 图的存储表示 7-3 图的遍历 7-4 生成树和最小生成树 小 结 for(i=2;i=vexnum;i++) /*输出从某源点到其他各顶点的最短路径*/ if(s[i]==1) { w=i; while(w!=v1) { printf(%d--,w); w=path[w]; /*通过找到前驱顶点,反向输出最短路径*/ } printf(%d,w); printf( %d\n,dist[i]); } else { printf(%d--%d,i,v1); printf( 9999\n); /*不存在路径时,路径长度设为9999*/ } } 7-6 AOV图与拓扑排序 7-6-1 AOV网与拓扑排序 一个无环的有向图称作有向无环图,它是描述工程或系统进程的有效工具。几乎所有的工程都可以分为若干个小的工程,这些小的工程之间有时存在一定的约束,即有些子工程必须在其他子工程完成之后才可以开始实施,而有些子工程之间又没有这样的约束关系。如大学某个专业的课程学习问题,有些课程可以独立于其他课程开设,即无先行课程,有些课程必须在它的先行课程学完之后才能开设,如图7.26所示几门课程的这种关系。这种以图中的顶点表示活动,弧表示活动之间优先关系的有向图称为AOV网(Activity on vertex network)。在AOV网中,若从顶点i到顶点j之间存在一条有向路径,称顶点i是顶点j的前驱,或者称顶点j是顶点i 的后继。若i,j是图中的弧,则称顶点i是顶点j的直接前驱,顶点j 是顶点i的直接后驱。 AOV网中的弧表示了活动之间存在的制约关系。例如,计算机专业的学生必须完成一系列规定的基础课和专业课才能毕业。学生按照怎样的顺序来学习这些课程呢?这个问题可以看成是一个工程,其活动就是每一门课程的教学,这些课程的名称与相应代号如图7.26所示。C1、C2 是独立于其它课程的基础课,而有的课却需要有先行课程,比如,学完计算机基础和高等数学后才能学C程序设计,先行条件规定了课程之间的优先关系。这种优先关系可以用图7.26所示的有向图来表示。其中,顶点表示课程,有向边表示前提条件。若课程 i为课程j 的先行课,则必然存在有向边i,j。在安排学习顺序时,必须保证在学习某门课之前,已经学习了其先行课程。类似的AOV网的例子还有很多,比如大家熟悉的计算机程序,任何一个可执行程序也可以划分为若干个程序段(或若干语句),由这些程序段组成的流程图也是一个AOV网。 在AOV网中不能出现有向环(或者称有向回路),因为环路说明某项“活动”能否进行要以自身任务的完成作为先决条件,表示顶点之间的先后关系进入了死循环,显然,这样的工程是无法完成的。如果图7.26中的有向图出现有向环,课表将无法编排。因此对给定的AOV网首先要判定网中是否存在环路,只有有向无环图在应用中才具有现实意义。可以对有向图进行拓扑排序来检测图中是否存在环路,如果要检测一个工程是否可行,首先就得检查对应的AOV网是否存在回路。检查AOV网中是否存在回路的方法就是拓扑排序。 拓扑排序时会得到一个有向图的顶点序列。设G=(V,E)是一个具有n个顶点的AOV网,V表示G中所有顶点的集合,E表示有向图中所有弧的集合。V中顶点的序列必须满足下列条件才可成为有向图的拓扑序列: (1)AOV网中,若顶点Vi是顶点Vj前驱 ,则在顶点序列中顶点Vi排在顶点 Vj之前; (2)AOV网中原来没有优先关系的顶点,如图7.26中的C1与C2及C3与C4,则在顶点序列中人为地建立一个先后关系,即或者顶点Vi排在顶点Vj之前,或者顶点Vi排在Vj之后。 若AOV网经过拓扑排序后所有顶点都在该顶点序列中,并且满足上述两个条件,则该顶点序列即为该AOV网的一个拓扑序列,可以判定该AOV网中必定不存在环。 7-6-2 拓扑排序的实现 对AOV网进行拓扑排序的方法和步骤是: (1)从网中选择一个没有前驱的顶点(入度为0)并且输

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档