第七部分图42756课程.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第八章 图 8.1 图的基本概念 8.2 图的存储结构 8.3 图的遍历 8.4 图的生成树和最小生成树 8.5 最短路径 8.6 拓扑排序 8.7 实训 8.1 何谓图形结构 8.1 图的起源和定义 8.2 图形结构的有关概念 图的起源和定义 图的起源: 在古代有一个地方(Koebigsberg,哥尼斯堡),有一条河,河中有一座岛,除了河所区别的两岸河小岛之外,还有一个半岛紧邻着河流,因此区别出四个区域,沟通这四个区域的是七座桥.问:”是否可以从某一个区域出发,经过每一座桥,而回到原先出发的区域?”----七桥问题. 图的定义 图形结构的有关概念 完全图(图G任意两个顶点都有一条边相连接) 证明: 例:判断下列4种图形各属什么类型? 稀疏图: 稠密图: 带权图: 邻接点: 简单路径: 8.2 图的存储结构 8.2.1 邻接数组表示法 8.2.2 邻接表表示法 图的特点:非线性结构(m :n ) 8.2.1 邻接数组(矩阵)表示法 用邻接矩阵表示法表示图,除了存储用于表示顶点间相邻关系的邻接矩阵外,通常还需要用一个顺序表来存储顶点信息。其形式说明如下: # define n 6 / * 图的顶点数 * / # define e 8 / * 图的边(弧)数 */ typedef char vextype; / * 顶点的数据类型 * / typedef float adjtype; / * 权值类型 * / typedef struct {vextype vexs[n]; adjtype arcs[n][n]; }graph; 例2 :有向图的邻接矩阵 容易实现图的操作,如:求某顶点的度、判断顶点之间是否有边(弧)、找顶点的邻接点等等。 n个顶点需要n*n个单元存储边(弧);空间效率为O(n2)。 对稀疏图而言尤其浪费空间。 8.2.2 邻接表表示法 例1:无向图的邻接表 例3:已知某网的邻接(出度)表,请画出该网络。 邻接表存储法的特点: 讨论:邻接表与邻接矩阵有什么异同之处? 8.3 图的搜索(遍历) 8.3.1 深度优先搜索遍历 8.3.2 广度优先搜索遍历 8.3 图的遍历 8.3.1 深度优先遍历(DFS) 算法描述 在图中,如果以顶点V作为起始点开始搜索,我们从顶点V的邻接表中选择一个未搜索过的顶点W,由顶点W继续进行深度优先法的搜索,每搜索一个顶点,便把该顶点压入堆栈。直到搜索到已经没有任何邻接的未遍历的顶点U,此时取栈顶顶点,回到上一层顶点继续搜索未遍历的顶点,直到所有的顶点皆搜索过为止。 8.3.1 深度优先遍历(DFS) 8.3.2 广度优先遍历(BFS) 算法描述 在图中,如果以顶点V作为起始点开始搜索,我们从顶点V的邻接表中选择一个未搜索过的顶点W,将顶点V的所有邻接顶点搜索过后,再继续对顶点W的所有邻接顶点进行广度优先法的搜索,然后再继续搜索顶点V的下一个邻接顶点的所有邻接顶点,重复进行广度优先搜索,直到所有的邻接顶点皆搜索过为止。通常是使用队列来存储邻接顶点,每搜索一个邻接顶点便把其所有的邻接顶点存入队列中,直到队列空为止。 连通组件 连通组件的判断,通常只需要在建立图形之后,从一个顶点开始对图形进行深度优先搜索或者广度优先搜索. 一次搜索完毕后,搜索到的顶点的集合为一个连通组件. 8.4 生成树问题 8.4.1 生成树的概念 8.4.2 Prims算法 8.4.3 Kruskal算法 定义:所有顶点均由边连接在一起,但不存在回路的图叫~ 生成森林:非连通图每个连通分量的生成树一起组成非连通图的~ 说明 一个图可以有许多棵不同的生成树 所有生成树具有以下共同特点: 生成树的顶点个数与图的顶点个数相同 生成树是图的极小连通子图 一个有n个顶点的连通图的生成树有n-1条边 生成树中任意两个顶点间的路径是唯一的 在生成树中再加一条边必然形成回路 含n个顶点n-1条边的图不一定是生成树 例1 :画出下图的生成树 例2:画出下图的生成森林(或极小连通子图) 最小生成树 最小生成树 典型用途: 问题抽象: 讨论:如何求得最小生成树? Kruskal 算法 算法思想:根据便的加权值递增的方式,依次找出加权值最低的边来建立最小生成树。 步骤: (1)设连通网N=(V,{E}),令最小生成树 初始状态为只有n个顶点而无边的非连通图T=(V,{?}),每个顶点自成一个连通分量 (2)在E中选取代价最小的边,若该边依附的顶点落在T中不同的连通分量上,则将此边加入到T中;否则,舍去此边,选取

文档评论(0)

taotao0b + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档