数据结构——第7章图和广跑义表1.pptVIP

  • 1
  • 0
  • 约1.64万字
  • 约 57页
  • 2018-12-25 发布于福建
  • 举报
数据结构——第7章图和广跑义表1

数据结构的内容 第7章 图和广义表 7.1 图的基本术语 例:判断下列4种图形各属什么类型? 子 图: 度 入度 出度 简单路径: 连通图: 7.2 图的存储结构 图的特点:非线性结构(m :n ) 7.2.1 邻接矩阵(数组)表示法 例2 :有向图的邻接矩阵 特别讨论 : 网(即有权图)的邻接矩阵 例3:已知某网的邻接(出边)表,请画出该网络。 邻接表存储法的特点: 讨论:邻接表与邻接矩阵有什么异同之处? 7.3 图的遍历 7.4 连通网的最小生成树 例1 :画出下图的生成树 讨论:如何求得最小生成树? 例: Kruskal(克鲁斯卡尔)算法 例:应用克鲁斯卡尔算法构造最小生成树的过程 7.5. 单源最短路径 求单源最短路径 (Dijkstra算法) 例: 7.6 拓朴排序 AOV网络的用途: 1 3 4 0 V1 ?V2 ?V3 ?V4 ?V5 ?V6 实现: V1 V2 V4 V5 V3 V7 V6 V8 0 1 2 3 4 5 6 7 V1 V2 V3 V4 V5 V6 V7 V8 2 ^ 1 0 1 0 1 2 2 3 3 5 4 ^ 6 ^ 7 ^ 7 ^ 6 ^ 5 ^ 4 ^ 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 2 ?V7 5 ?V8 F R R F R R F R R F 6 7 F F F F F R R R 1 1 1 1 1 1 1 1 1.概念 生成树:是一个极小连通子图,它含有图中全部顶点,但只有n-1条边。 生成森林:由若干棵生成树组成,含全部顶点,但构成这些树的边是最少的。 思考1:对连通图进行遍历,得到的是什么? ——得到的将是一个极小连通子图,即图的生成树! 由深度优先搜索得到的生成树,称为深度优先搜索生成树。 由广度优先搜索得到的生成树,称为广度优先搜索生成树。 思考2:对非连通图进行遍历,得到的是什么? —— 得到的将是各连通分量的生成树,即图的生成森林! DFS生成树 v0 v1 v2 v4 v4 v3 邻接表 4 3 2 1 0 ^ 1 3 3 4 ^ 1 4 2 ^ 0 v4 v3 v2 v1 v0 2 3 ^ 1 4 2 ^ 0 v0 v2 v1 v4 v3 BFS生成树 v0 v1 v3 v2 v4 无向连通图 D E G H I K 子图 (或连通分量) A B C F J L M A B C F J L M D E G H I K 生成森林 D E A B C F J L M V1 V6 V5 V4 V3 V2 6 5 1 3 5 6 6 4 2 5 V1 V6 V5 V4 V3 V2 6 5 1 3 4 V1 V6 V5 V4 V3 V2 6 5 1 3 2 19 17 2 构造最小生成树 最小生成树:给定一个无向网络,在该网的所有生成 树中,使得各边权数之和最小的那棵生成树称为该网的最 小生成树,也叫最小代价生成树。 要在 n 个城市间建立通信联络网。顶点:表示城市, 权:城市间通信线路的花费代价。希望此通信网花费代价最小。 问题提出: 答案只能从生成树中找,因为要做到任何两个城市之 间有线路可达,通信网必须是连通的;但对长度最小的要求可以 知道网中显然不能有圈,如果有圈,去掉一条边后,并不破坏连 通性,但总代价显然减少了,这与总代价最小的假设是矛盾的。 希望找到一棵生成树,它的每条边上的权值之和(即建立 该通信网所需花费的总代价)最小 —— 最小代价生成树。 问题分析: 结论: ——有多种算法,但最常用的是以下两种: 最小生成树的 MST 性质如下: Prim(普里姆)算法 Kruskal(克鲁斯卡尔)算法 Prime算法特点: 将顶点归并,与边数无关,适于稠密网。 Kruskal算法特点:将边归并,适于求稀疏网的最小生成树。 这两个算法,都是利用MST 性质来构造

文档评论(0)

1亿VIP精品文档

相关文档