[其它课程]数据结构第17次课 图C.ppt

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

7. 5.1 拓扑排序 问题转化:学生选修课程问题 顶点——表示课程 有向弧——表示先决条件,若课程i是课程j的先决条件,则图中有弧i,j 学生应按怎样的顺序学习这些课程,才能无矛盾、顺利地完成学业——图的拓扑排序 定义 AOV网——用顶点表示活动,用弧表示活动间优先关系的有向图称为顶点表示活动的网(Activity On Vertex network),简称AOV网 若vi,vj是图中有向边,则vi是vj的直接前驱;vj是vi的直接后继 AOV网中不允许有回路,回路意味着某项活动以自己为先决条件 拓扑排序——把AOV网络中各顶点按照它们相互之间的优先关系排列成一个线性序列的过程叫拓扑排序 检测AOV网中是否存在环方法:对有向图构造其顶点的拓扑有序序列,若网中所有顶点都在它的拓扑有序序列中,则该AOV网必定不存在环。 算法实现(适合采用存储结构?为什么?) 以邻接表作存储结构(结点编号从大到小?) 把邻接表中所有入度为0的顶点进栈 栈非空时,输出栈顶元素Vj并退栈;在邻接表中查找Vj的直接后继Vk,把Vk的入度减1;若Vk的入度为0则进栈 重复上述操作直至栈空为止。若栈空时输出的顶点个数不是n,则有向图有环;否则,拓扑排序完毕 算法动态执行过程演示 算法动态执行过程演示 7.4.5 最短路径 问题提出 迪杰斯特拉(Dijkstra)算法思想(顶点归并) 求最短路径步骤(顶点归并) 初使时令 S={V0},T={其余顶点},T中顶点对应的距离值 若存在V0,Vi,为V0,Vi弧上的权值 若不存在V0,Vi,为? 从T中选取一个其距离值为最小的顶点W,加入S 对T中顶点的距离值进行修改:若加进W作中间顶点,从V0到Vi的距离值比不加W的路径要短,则修改此距离值 重复上述步骤,直到S中包含所有顶点,即S=V为止 算法实现 图用带权邻接矩阵存储ad[][] 数组dist[]存放当前找到的从源点V0到每个终点的最短路径长度,其初态为图中直接路径权值 数组pre[]表示从V0到各终点的最短路径上,此顶点的前一顶点的序号;若从V0到某终点无路径,则用0作为其前一顶点的序号(为什么不记录每条路径?) 算法描述 每一对顶点之间的最短路径 方法一:每次以一个顶点为源点,重复执行Dijkstra算法n次—— T(n)=O(n3) 方法二:弗洛伊德(Floyd)算法 算法思想:逐个顶点试探法 求最短路径步骤 初始时设置一个n阶方阵,令其对角线元素为0,若存在弧Vi,Vj,则对应元素为权值;否则为? 逐步试着在原直接路径中增加中间顶点,若加入中间点后路径变短,则修改之;否则,维持原值 所有顶点试探完毕,算法结束 算法实现 图用邻接矩阵存储 length[][]存放最短路径长度 path[i][j] 是从Vi到Vj的最短路径上Vj前一顶点序号 算法描述 0 0 0 1 in link 5 5 4 3 ^ ^ ^ vex next 2 ^ 2 5 ^ 2 4 0 1 2 3 4 5 6 ^ 输出序列:6 1 3 3 2 1 0 4 4 top p 例 1 2 3 4 5 6 0 0 0 1 in link 5 5 4 3 ^ ^ ^ vex next 1 ^ 2 5 ^ 2 4 0 1 2 3 4 5 6 ^ 输出序列:6 1 3 3 2 1 0 4 4 top p 例 1 2 3 4 5 6 0 0 0 1 in link 5 5 4 3 ^ ^ ^ vex next 1 ^ 2 5 ^ 2 4 0 1 2 3 4 5 6 ^ 输出序列:6 1 3 3 2 1 0 4 4 top p 例 1 2 3 4 5 6 0 0 0 0 in link 5 5 4 3 ^ ^ ^ vex next 1 ^ 2 5 ^ 2 4 0 1 2 3 4 5 6 ^ 输出序列:6 1 3 3 2 1 0 4 4 top p 2 例 1 2 3 4 5 6 0 0 0 0 in link 5 5 4 3 ^ ^ ^ vex next 1 ^ 2 5 ^ 2 4 0 1 2 3 4 5 6 ^ 输出序列:6 1 3 3 2 1 0 4 4 top p 2 例 1 2 3 4 5 6 0 0 0 0 in link 5 5 4 3 ^ ^ ^ vex next 1 ^ 2 5 ^ 2 4 0 1 2 3 4 5 6 ^ 输出序列:6 1 3 3 2 1 0 4 4 top 2 p=NULL 例 1 2 3 4 5 6 0 0 0 0 in link 5 5 4 3 ^ ^ ^ vex next 1 ^

文档评论(0)

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

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

1亿VIP精品文档

相关文档