全套课件:数据结构.ppt

  1. 1、本文档共764页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
拓朴排序: 拓扑次序:设G(V,E)是一个有向图,它的n个顶点v1、v2、v3、……vn,若顶点次序vi1、vi2、vi3、……、vin 能使得<vij,vik>∈E(G),且j<k,则将顶点间的这种次序称为拓扑次序。 1 6 4 5 3 2 拓朴次序:v1,v6,v4,v3,v2,v5 或v6,v1,v4,v3,v5,v2 特点: 反映后面的顶点依赖前面的顶点; 弧尾结点出现在弧头结点前面。 拓朴排序算法的基本思想: 根据顶点入度是否为0,来决定该点是否可输出,入度为0(即没有前驱),则输出; 输出一个顶点后,由该点引出的弧所对应的弧头顶点的入度减1; 重复a)、b),至n。 若输出顶点数小于n,则证明存在回路(环)。 1 4 6 5 3 2 1 6 4 3 2 5 拓朴次序 拓朴排序算法的实现: 用邻接表存储表示AOV网,在表头结点中设置入度域; 用栈存放入度为0的结点; 用表头中入度为0的入度域作为栈的结点。 拓朴排序算法的描述: 查邻接表中入度为0的结点,并将之压入堆栈; 栈非空时,做: 输出栈顶元素; 将输出顶点的后继顶点的入度减1; 计算输出顶点个数:m=m+1; 入度为0的入栈。 判断:当m < n时,证明有回路(环)。 !注: 拓扑排序可以检验有向图是否有环; 还可用深度优先遍历的方法检查有向图是否有环。 关键路径: AOE网( Active on Edges):顶点表示事件,边表示活动以及所需时间。 v3 v1 v2 v4 v5 a1=6 a4=1 a5=1 a6=2 a3=5 a2=4 v8 v7 v6 v9 a10=2 a7=9 a8=7 a11=4 a9=4 关键路径(Critical Path):从源点v1到汇点v9的最长路径叫关键路径。 v3 v1 v2 v4 v5 a1=6 a4=1 a5=1 a6=2 a3=5 a2=4 v8 v7 v6 v9 a10=2 a7=9 a8=7 a11=4 a9=4 源点(起点):入度为0。 汇点(终点):出度为0。 几个概念: ve(i):vi的最早开始时间=v1到vi的最长路径,ve(n)=工程完成时间。 vl(i):vi的最迟开始时间 = vn-vi到vn的最长路径。 e(k):活动ak的最早开始时间,若ak=<vi,vj> 则e(k)=ve(i)。 l(k):活动ak的最迟开始时间,若ak=<vi,vj> 则l(k)=vl(j)- ak。 l(k)-e(k):活动ak的松弛时间 slack time,若l(k)=e(k)则ak叫做关键活动 。 ve(i),vl(i)的递归算法(以拓扑排序递归): ve(0)=0; ve(j)=max{ ve(i)+dut<i,j>, <i,j>∈T} dut<i,j> =边ak,<vi,vj>的长 T是所有以vj为终点的边的集合 vl(n-1)=ve(n-1) vl(i)=min{vl(j)-dut<i,j>, <i,j>∈S} S是所有以vi为起点的边的集合 vi vj ak v3 v1 v2 v4 v5 a1=6 a4=1 a5=1 a6=2 a3=5 a2=4 v8 v7 v6 v9 a10=2 a7=9 a8=7 a11=4 a9=4 Ve Vl v1 0 0 v2 6 6 v3 4 6 v4 5 8 v5 7 7 v6 7 10 v7 16 16 v8 14 14 v9 18 18 a1 0 0 * a2 0 2 a3 0 3 a4 6 6 * a5 4 6 a6 5 8 a7 7 7 * a8 7 7 * a9 7 10 a10 16 16 * a11 14 14 * 六、最短路径 几个概念: 路径:从顶点v1到顶点vx所经历的边的集合,称为顶点v1到顶点vx的路径。 路径长度: 由顶点v1到顶点vx所经历的边的数目。 由顶点v1到顶点vx所经历的边上的权值之和。 单源点最短路径问题:给定带权有向图G和源点v,求从v到G中其余各顶点的最短路径。 !注意: 每个结点只能被访问一次,又因为一个结点可以和其它的任何结点相邻接,为了避免对一个结点的重复访问,必须对访问过的结点加以标记。 结点的邻接结点的次序是任意的,因此广度优先搜索的序列可能有多种。 访问方式: 选中第一个被访问的结点V; 对结点V作已访问过的标志。 依次从结点 V 的未被访问过的第一个、第二个、第三个、……第M个邻接点 W1、W2、W3…… Wm,且进行标记。 依次访问结点 W1、W2、W3…… Wm的邻接点

您可能关注的文档

文档评论(0)

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

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

版权声明书
用户编号:7201060146000004

1亿VIP精品文档

相关文档