Sun数据结构第7章图(第19-22讲).ppt

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

7.6 最短路径 本章小结 1、图中的基本术语; 2、图的邻接矩阵和邻接表存储; 3、图的遍历; 4、图的生成树与最小生成树; 5、拓扑排序; 6、关键路径; 7、最短路径。 ai的最晚开始时间等于事件k的最迟发生时间减去活动ai的持续时间。 活动ai的最晚开始时间l[i] i k 10 ai l(ai)=vl(k)–10 注意:“活动”的最迟开始时间不能简单的定义为起始事件的最晚时间。 例: a b c d e f i h k 6 4 5 2 1 1 8 7 2 4 4 练习:求该AOE网中各活动 的最早和最迟发生时间 最早开始时间和最迟开始时间相等的活动为关键活动;关键路径由关键活动组成。 “关键活动”指的是:该弧上的权值增加将使有向图上的最长路径的长度增加,即延长工期。 a b c d e f g h k 6 4 5 2 1 1 8 7 2 4 4 0 0 0 0 0 0 0 0 0 6 4 5 7 11 5 7 15 14 18 18 18 18 18 18 18 18 18 18 16 14 8 6 6 10 8 0 7 0 6 4 5 7 7 15 14 18 18 14 16 10 7 8 6 6 0 0 0 0 6 4 5 7 7 7 15 14 14 16 0 2 3 6 6 8 8 7 10 克鲁斯卡尔(Kruskal)算法 设有一个有n个顶点的连通网络N={V,E},最初先构造一个只有n个顶点,没有边的非连通图T={V,?},图中每个顶点自成一个连通分量。当在E中选到一条具有最小权值的边时,若该边的两个顶点落在不同的连通分量上,则将此边加入到T中;否则将此边舍去,重新选择一条权值最小的边。如此重复下去,直到所有顶点在同一个连通分量上为止。 应用克鲁斯卡尔算法构造最小生成树的过程 应用克鲁斯卡尔算法构造最小生成树 2 1 4 3 5 6 6 5 10 7 15 25 8 23 4 20 7 18 12 克鲁斯卡尔 (Kruskal) 算法: 时间复杂度:O(e),e为图中边的条数。 适合于求边稀疏的网的最小生成树。 普里姆(Prim)算法: 时间复杂度:O(n2),n为图中结点个数。 与边无关,适合于求边稠密的网的最小生成树。 普里姆(Prim)算法与克鲁斯卡尔 (Kruskal)算法的比较 任何一个无向连通图的最小生成树( ) A.有一棵或多棵 B.只有一棵 C.一定有多棵 D.可能不存在 练习题 A V1 V3 V2 V4 V5 V6 6 5 4 1 4 2 3 4 6 4 求左图的最小生成树 7.5 有向无环图及其应用 一个无环的有向图称做有向无环图,简称DAG图。 有向树 DAG图 有向图 7.5 有向无环图及其应用 DAG图是一类较有向树更一般的特殊有向图。 用二叉树描述表达式 描述表达式的有向无环图 7.5 有向无环图及其应用 有向无环图是描述一项工程或系统的进行过程的有效工具。 对有向图进行拓扑排序和求关键路径可解决工程中相关的实际问题。 拓扑排序 通常我们把计划、施工过程、生产流程、程序流程等都当成一个工程,一个大的工程常常被划分成许多较小的子工程,这些子工程称为活动。这些活动完成时,整个工程也就完成了。 拓扑排序 例,计算机专业学生的课程开设可看成是一个工程,每一门课程就是工程中的活动。 顶点表示活动,有向边表示活动的先后关系的网简称为AOV网。 B E F C L F D B E F C L F D 有向无环图 有向图(含环) 拓扑排序 AOV网中不能有环,否则工程无法顺利进行。 在AOV网中,若不存在回路,则所有活动可排成一个线性序列,使得每个活动的所有前驱活动都排在该活动的前面,我们把此序列叫做拓扑序列(Topological Order),由AOV网构造拓扑序列的过程叫做拓扑排序 (Topological Sort)。 拓扑排序(在AOV网中实现) 拓扑排序 由AOV网构造拓扑序列的实际意义是:如果按照拓扑序列中的顶点次序,在开始每一项活动时,能够保证它的所有前驱活动都已完成,从而使整个工程顺利进行,不会出现冲突的情况。 课程表该如何安排? 如何进行拓扑排序? 对AOV网进行拓扑排序的方法是: ① 在AOV网中选择一个入度为0的顶点,并输出它到拓扑序列中; ② 从网中删去该顶点及它的所有出边; 反复执行①②两步,直到网中所有顶点都被输出了(拓扑序列完成),或网的剩余部分中再也选不出入度为0的顶点(图中有环)为止。 1 3 2 7 5 6 4 1 3 2 7 5 6 4 1 3 2 4 6 5 7 例:对下列AOV网进行拓扑排序。 拓扑序列为: 假设以有向图表示一个工程的施工图或程序的数据流图,则图中不允许出现回路。 检查有向图中是否存在回路的方法之一,是对有向图进

文档评论(0)

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

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

1亿VIP精品文档

相关文档