[工学]第03章 非线性数据结构-图.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文档。上传文档
查看更多
[工学]第03章 非线性数据结构-图

第03章 非线性数据结构-图 图及其基本概念 图的存储结构 图的遍历 图的连通性及最小生成树 图的基本概念 树与图:在树中,每个结点只与上层的父结点有联系,并可以与其下层的多个子结点有联系。在图中,结点之间的联系是任意的,每个结点都可以与其它的结点相联系。 图:图G由两个集合V(G)和E(G)所组成,记作G=(V,E)。 V(G)是图中顶点的非空有限集合; E(G)是图中边的有限集合。 图的基本概念 有向图:如果图中每条边都是顶点的有序对,即每条边都用箭头表明了方向,则此图为有向图。有向图中的边也称为弧,用尖括号括起一对顶点表示。 V(G1)= {V1,V2,V3,V4} E(G1)= { V1, V2, V1, V3, V3, V4, V4, V1} 如其中弧 V1, V2,称V1为初始点或弧之尾,V2为终端点或弧之头。 无向图:如果图中每条边都是顶点的无序对,则称此图为无向图。无向边用圆括号括起的两个相关顶点来表示。 V(G2)= { V1,V2,V3,V4} E(G2)= {(V1, V2),(V1, V3),(V3, V4),( V4, V1)} 注:在无向图中,(V1, V2)与(V2, V1)表示同一条边 图的基本概念 子图:设有两个图GA和GB,且满足 V(GB) V(GA) ,E(GB) E(GA)则称GB是GA的子图。 图的基本概念 带权图:在图的边或弧上加上一个相关联的数(权),称为带权图或网。 图的基本概念 路径:图中一个顶点的序列称路径。如v到v’的路径为(V=Vi0,Vi1,Vi2,…,Vin=V’),并且Vi0,Vi1Vi1,Vi2…Vin?1,Vin都属于集合E。路径上弧的数目称为该路径的长度。在无向图中,若每一对顶点之间都有路径,则称此图为连通图。在有向图中,若每一对顶点u和v之间都存在v到u及u到v的路径,则称此图为强连通图。 邻接点:在无向图中,如果边(u,v)∈E,则u和v互为邻结点,即u是v的邻结点,v也是u的邻结点。在有向图中,如果弧u,v∈E,则v是u的邻结点。称u邻接到v,或顶点v邻接自顶点u。 顶点的度:在无向图中,顶点的度就是和该顶点相关联的边的数目,记为TD(V)。在有向图中,以某顶点为弧头的弧的数目,称为此顶点的入度,记作ID(V);以某顶点为弧尾的弧的数目称为此顶点的出度,记作OD(V)。该顶点的度则是此顶点的入度与出度之和。 图的存储结构 邻接矩阵表示法和邻接表表示法 邻接矩阵: 用一个一维数组存放图中所有顶点的信息; 用一个二维数组来存放数据元素之间的关系的信息(即边或弧的集合E)。这个二维数组称之为邻接矩阵。 邻接矩阵是表示顶点之间的邻接关系的矩阵。设G =(V,E)是有n(n≥1)个顶点的图,则G的邻接矩阵A是一个具有下列性质的n×n阶矩阵: 图的存储结构 将顶点编号为1~Vtxnum,设弧上或边上无权值,则图的存储结构可以简化为用一个二维数组表示: int adjmatrix[vtxnum][vtxnum]; 图的存储结构 无向图的邻接矩阵是对称的,而有向图的邻接矩阵不一定对称。对无向图可考虑只存下三角(或上三角)元素。 对于无向图,邻接矩阵第i行(或第i列)的元素之和是顶点Vi的度。 对于有向图,邻接矩阵第i行元素之和为顶点Vi的出度;第i列的元素之和为顶点Vi的入度。 图的存储结构 图的存储结构 邻接表:邻接表是一种顺序分配和链式分配相结合的存储结构。它包括两个部分:一部分是链表;另一部分是向量。 在邻接表中,对图中每个顶点建立一个单链表,第i个单链表中的结点包含了顶点Vi的所有邻接顶点。每个结点由三个域组成:adjvex、data和nextarc, 图的存储结构 为便于邻接表操作,在每个单链表上附设一个头结点,在头结点中有两个域:vexdata和firstarc。 图的存储结构 邻接表的存储结构可以用C语言描述如下: #define VTXNUM n /*n为图中顶点个数的最大可能值*/ struct arcnode { int adjvex; float data; struct arcnode *nextarc; }; typedef struct arcnode ARCNODE; struct headnode { int vexdata; ARCNODE *firstarc; }adjlist[VTXNUM]; 邻接表特别适合与表示结点数多但边数较少的图 图的存储结构 图的存储结构 图的存储结构 在邻接表上容易找到任一顶点的第一个邻接点和下一个邻接点,但要判定任意两个顶点(Vi和Vj)之间是否有边或弧相连,则需搜索第i个或第j个链

文档评论(0)

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

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

1亿VIP精品文档

相关文档