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

第七章 图 ⒈教学内容: 7.1 图的基本概念 7.2 图的存储表示 7.3 图的遍历 7.4 图的连通性 7.5 最小生成树 7.6 最短路径 7.7 有向无环图及其应用 ⒉教学目的: ⑴理解图的基本概念及术语; ⑵掌握图的两种存储结构(邻接矩阵和邻接表)的表示方法; ⑶熟练掌握图的两种遍历的算法思想、步骤; ⑷理解最小生成树的概念,能按Prim、Kruskal算法构造最小生成树; ⑸领会并掌握拓扑排序、关键路径、最短路径的算法思想。 ⒊教学重点: ⑴理解图的定义、术语及其含义; ⑵掌握各种图的邻接矩阵表示法及其类型说明; ⑶理解并掌握图的按深度优先搜索遍历方法和按广度优先搜索遍历方法; ⑷领会生成树和最小生成树的概念; ⑸掌握由Prim,Kruskal算法思想构造最小生成树算法思想; ⑹领会拓扑序列和拓扑排序的概念; ⑺理解并掌握拓扑排序的算法思想; ⑻理解并掌握关键路径的算法思想; ⑼理解并掌握最短路径的算法思想。 ⒋教学难点: ⑴正确理解与区别图的常用术语; ⑵区别图的两种存储结构的不同点及其应用场合; ⑶关键路径的算法思想; ⑷最短路径的算法思想。 7.1 图的基本概念 图的定义和术语 图的基本操作 7.1.1 图的定义和术语 1.图的定义 图(Graph)是由非空的顶点集合和一个描述顶点之间关系——边(或者弧)的集合组成,其形式化定义为: G=(V,E) V={vi| vi∈dataobject},E={( vi,vj)| vi, vj ∈V ∧P(vi, vj)} 7.1.2 图的基本操作 ⑴CreatGraph(G)输入图G的顶点和边,建立图 G的存储。 ⑵DestroyGraph(G)释放图G占用的存储空间。 ⑶GetVex(G,v)在图G中找到顶点v,并返回顶 点v的相关信息。 ⑷PutVex(G,v,value)在图G中找到顶点v, 并将value值赋给顶点v。 ⑸InsertVex(G,v)在图G中增添新顶点v。 ⑹DeleteVex(G,v)在图G中,删除顶点v以及 所有和顶点v相关联的边或弧。 7.1.2 图的基本操作 ⑺InsertArc(G,v,w)在图G中增添一条 从顶点v到顶点w的边或弧。 ⑻DeleteArc(G,v,w)在图G中删除一条 从顶点v到顶点w的边或弧。 ⑼DFSTraverse(G,v)在图G中,从顶点v 出发深度优先遍历图G。 ⑽BFSTtaverse(G,v)在图G中,从顶点v 出发广度优先遍历图G。 7.2 图的存储表示 邻接矩阵 邻接表 十字链表 邻接多重表 7.2.1 邻接矩阵 所谓邻接矩阵(Adjacency Matrix)的存储结构,就是用一维数组存储图中顶点的信息,用矩阵表示图中各顶点之间的邻接关系。假设图G=(V, E)有n个确定的顶点,即V={v0,v1,…,vn-1},则表示G中各顶点相邻关系为一个n×n的矩阵,矩阵的元素为: A[i][j]= 若G是网图,则邻接矩阵可定义为: A[i][j]= 其中,wij表示边(vi,vj)或vi,vj上的权值;∞表示一个计算机允许的、大于所有边上权值的数。 7.2.2 邻接表 邻接表(Adjacency List)是图的一种顺序存储与链式存储结合的存储方法。邻接表表示法类似于树的孩子链表表示法。就是对于图G中的每个顶点vi,将所有邻接于vi的顶点vj链成一个单链表,这个单链表就称为顶点vi的邻接表,再将所有点的邻接表表头放到数组中,就构成了图的邻接表。 7.2.3 十字链表 十字链表(Orthogonal List)是有向图的一种存储方法,它实际上是邻接表与逆邻接表的结合,即把每一条边的边结点分别组织到以弧尾顶点为头结点的链表和以弧头顶点为头顶点的链表中。在十字链表表示中,顶点表和边表的结点结构分别如下图的(a)和(b)所示。 7.2.4 邻接多重表 邻接多重表(Adjacency Multilist)主要用于存储无向图。因为,如果用邻接表存储无向图,每条边的两个边结点分别在以该边所依附的两个顶点为头结点的链表中,这给图的某些操作带来不便。例如,对已访问过的边做标记,或者要删除图中某一条边等,都需要找到表示同一条边的两个结点。因此,在进行这一类操作的无向图的问题中采用邻接多重表作存储结构更为适宜。 7.3 图的遍历 深度优先搜索 广度优先搜索 访问了v1,v2,v3,v4之后,沿

文档评论(0)

170****0532 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8015033021000003

1亿VIP精品文档

相关文档