CH16-图讲义.ppt

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

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, ? 2005 Pearson Education, Inc. All rights reserved. 0-13-140909-3 图和有向图 Chapter 16 主要内容 16.1有向图 -图的表示 16.2搜索和遍历有向图 -深度优先和广度优先搜索 -最短路径 16.3图 -拓扑排序(补充) 16.1 有向图 树是一种特殊的有向图 树和有向图区别: 树有根节点且没有指向自己的弧,但是从根节点可以通过一条唯一的路径到达任何其他节点。 有向图从一个节点到另一个节点之间可能有几条或没有路径。 1-2-3 1-4-3 1-6 16.1 有向图 有向图实际应用: 电路分析 寻找最短路径 开发项目调度表 有向图ADT 数据元素集合: 一个有限的称为顶点或节点的元素集合以及一个有限的连接每对顶点的有向弧或有向边的集合。 基本操作: 创建空的有向图 检查有向图是否为空 销毁有向图 插入一个新节点 插入一条连接两个已存在节点的有向边,或者插入一条从一个已 存在节点指向其自身的有向边。 删除一个节点以及所有指向它或从它发出的有向边。 输出一条在两个已存在节点之间的有向边 从一个给定的节点开始在节点中搜索某个值 有向图与无向图:在有向图中,顶点对 x, y 是有序的。在无向图中,顶点对(x, y)是无序的。 完全图:若有 n 个顶点的无向图有 n(n-1)/2 条边, 则此图为完全无向图。有 n 个顶点的有向图有n(n-1) 条边, 则此图为完全有向图。 邻接顶点:如果 (u, v) 是图中的一条边,则称 u 与 v 互为邻接顶点。 顶点v的入度:以v为终点的有向边的条数, 顶点v的出度:以v为始点的有向边的条数。 顶点的度:一个顶点v的度是与它相关联的边的条数。在有向图中, 顶点的度等于该顶点的入度与出度之和。 权:某些图的边具有与它相关的数, 称之为权。这种带权图叫做网络。 图的表示 在图的邻接矩阵表示中,有一个记录各个顶点信息的顶点表,还有一个表示各个顶点之间关系的邻接矩阵。 设图 A = (V, E)是一个有 n 个顶点的图, 图的邻接矩阵是一个二维数组 A.edge[n][n],定义: 图的表示 带权图的邻接矩阵 邻接矩阵 在有向图中, 统计第 i 行 1 的个数可得到顶点 i 的出度,统计第 j 列 1 的个数可得顶点 j 的入度。 缺点1:没有存储有向图的顶点中的数据条目。 ------创建辅助数组 缺点2:浪费大量存储空间存储零元素。 ------邻接表 邻接矩阵 假设adj是图G的邻接矩阵,那么adji,k,即第i行第k列的元素,adjk,j,即第k行第j列的元素。 adj2的i,j元素就是对于所有可能的k值,所有adji,k.adjk,j的乘积之和。 邻接矩阵 adj2的i,j元素就是从顶点i到顶点j的长度为2的路径数。 总的来说,adj的m次幂即adjm,它的i,j元素就表示从顶点i到顶点j的长度为m的路径数。 邻接表 邻接表 回顾树的遍历操作:访问并仅仅访问每个节点一次。 但是,在有向图中有可能并不存在一个从它开始可以到达 其他任何顶点的顶点。所以有可能不能遍历整个图。 提出问题:在一个有向图中,判断从一个给定的节点开始,哪些节点是可达的? 搜索这些顶点的标准方法:深度优先搜索和广度优先搜索。 有向图中V0到其它结点可达,非对称 图中, 从结点vi到另一结点vj有边,那么vi可到达vj ,同样的道理,如果 vi到vj可达,而vj到vk可达,那么vi到vk可达。 Warshall算法描述 确定所有结点之间的所有互相可达(连通)的关系。 深度优先搜索的示例 深度优先搜索DFS ( Depth First Search ) 【例】以深度优先搜索方法从顶点 出发遍历图, 建立深度优先生成森林。 广度优先搜索的示例 广度优先搜索BFS ( Breadth First Search ) 最短路径(Shortest Path) 路由问题:网络中寻找一条优化的路径 -图或有向图中最短路径 -带权图或带权有向图中代价最小的路径 例如:一个模拟空中航线网络的有有向图,其中每个顶点代表一个城市,有向弧代表连接这些城市的航班。 问题:寻找两个城市间最短路径的路线? -由起始顶点到目的顶点之间最小数目的弧组成的路径。 边上权值非负情形的单源最短路径问题 问题的提法: 给定一个带权有向图D与源点 v,求从

文档评论(0)

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

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

1亿VIP精品文档

相关文档