《数据结构》--图讲述.pptx

  1. 1、本文档共58页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计科系-王丹丹 第7章 图 本章主要内容 图的基本概念 图的存储结构 图的遍历 最小生成树 最短路径 拓扑排序 关键路径 1 2 3 4 5 6 7 8 9 7.1 开场白 在实际生活中,有许多应用问题都可以归结为图的问题。 例如交通旅游中,城市和城市间距离信息就可以使用一个图来描述。 图就是一个由点及点之间的连线组成的集合。 7.2 图的定义 图 图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为G(V,E),G表示一个图,V是图G中顶点的集合,E是图G中边的集合。 注意 名称 数据元素 无数据元素 相邻元素间关系 线性表 元素 空表 线性关系 树 结点 空树 层次关系 图 顶点(Vertex) 不允许没有结点 顶点间的逻辑关系用边来表示 7.2.1 各种图定义 A D B C 可以写成(A,D) A D B C 不能写成A,C A D B C A D B C 结论:对于具有n个顶点和e条边数的图,无向图0≤e≤n(n-1)/2,有向图0≤e≤n(n-1)。 A D B C 1000 700 800 808 660 A D B C 7.2.2 图的顶点与边间关系 A D B C A D B C A D B C A D B C A D B C A D B C 例:顶点B到顶点D有两种路径 回路/环(Cycle) 第一个顶点到最后一个顶点相同的路径。 简单路径 序列中顶点不重复出现的路径。 简单回路/简单环 除第一个顶点和最后一个顶点之外,其余顶点不重复出现的回来。 例: A D B C A D B C 第一个顶点和最后一个顶点都是B,且C、D、A没有重复出现。简单环 由于顶点C、的重复出现。不是简单环 7.2.3 连通图相关术语 A D B C A D B C F E 不是连通图 连通图 连通分量 无向图中的极大连通子图。 概念强调: 例: 连通子图含有极大顶点数 子图要是连通的 要是子图 具有极大顶点数的连通子图包含依附于这些顶点的所有边 A D B C A D B C F E F E A B C 图1 图4 图3 图2 图1的连通分量是图2和图3。 A D B C A B C 图1 图2 图1:不是强连通图 图2:是图1的极大强连通子图(强连通分量) 生成树 一个连通图的生成树是一个极小的连通子图,它含有图中全部的n个顶点,但只有足以构成一棵树的n-1条边。 例: 生成森林 如果一个有向图恰有一个顶点的入度为0,其余顶点的入度均为1,则是一棵有向树。 一个有向图的生成森林由若干棵有向树组成,含有图中全部顶点,但只有足以构成若干棵不相交的有向树的弧。 例: A D B C 图1 图2 E F G A D B C E F G 图3 有向图 生成 森林 7.3 图的抽象数据类型 ADT 图(Graph) Data 顶点的有穷非空集合和边的集合。 Operation CreateGraph(*G,V,VR):按照顶点集V和边弧VR的定义构造图G。 DestroyGraph(*G):图G存在则销毁。 LocateVex(G,u):若图G中存在顶点u,则返回图中的位置。 GetVex(G,v):返回图G中顶点v的值。 PutVex(G,v,value):将图G中顶点v赋值value。 FirstAdjVex(G,*v) NextAdjVex(G,v,*w) InsertVex(*G,v) …… endADT 7.4 图的存储结构 从图的逻辑结构定义来看,图上任何一个顶点都可被看成是第一个顶点,任一顶点的邻接点之间也不存在次序关系。 右图是同一个图,只不过顶点位置不同。 7.4.1 邻接矩阵 顶点数组 Vertex[4] 边数组 arc[4][4] 有了矩阵就很容易知道图中的信息。判断任意两点是否有边?某顶点的度?求顶点的所有邻接点? V0的度为2 V0的所有邻接点 例:有向图样例如图所示 分析: 主对角线上数值仍然为0; 因为是有向图,矩阵并不对称; 有向图的入度和出度。 顶点数组 Vertex[4] 边数组 arc[4][4] V1的入度为1 V1的出度为2 判断任意两点是否有边?某顶点的度?求顶点的所有邻接点? 顶点数组 Vertex[4] 边数组 arc[4][4] 1 5 3 2 9 6 图的邻接矩阵存储的结构 /*图的邻接矩阵存储的结构*/ typedef char VertexType; //顶点类型定义 typedef int Edg

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档