网站大量收购独家精品文档,联系QQ:2885784924

数据结构第7章_图(改2)1.ppt

  1. 1、本文档共69页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章 图 第7章 图 7.1 图的基本概念 7.2 图的存储方法 7.3 图的遍历 7.4 生成树和最小生成树 习题 7.1 图的基本概念 图: 图(G)是一种非线性数据结构,它由两个集合V(G)和E(G)组成,形式上记为: G=( V, E ) 其中V(G)是顶点(Vertex)的非空有限集合, E(G)是V(G)中任意两个顶点之间的关系集合,又称为边(Edge)的有限集合。 有向图与无向图 有向图:边用x, y表示,且x与y是有序的。 a) 有向图中的边称为“弧” b) x——弧尾或弧的初始点 y——弧头或弧的终端点 无向图:边用(x, y) 表示,且顶x与 y是无序的。 顶点的数目n与弧或边的数目e的关系 无向图 0≤e≤n(n-1)/ 2 e=0:任意两顶点之间都没有边 e=n(n-1)/2:任意两顶点之间都有边,称为完全无向图 有向图 0≤e≤n(n-1) e=0:任意两顶点之间都没有弧 e=n(n-1):任意两顶点之间都有弧,称为完全有向图 稀疏图:e nlogn的图 稠密图: e=nlogn的图 子图 设有两个图 G=(V, E) 和 G’=(V’, E’)。若 V’? V 且 E’?E, 则称图G’ 是图G 的子图。 顶点的度 无向图: 顶点v的度D(v):与该顶点相关的边的数目 有向图: 顶点v的入度ID(v) :以该顶点为终点的弧的数目 顶点v的出度OD(v) :以该顶点为起点的弧的数目 顶点v的度 D(v)= ID(v) + OD(v) 例如,有向图G1:ID(A)= 1,OD(A)=2,D(A)=3 无向图G2:D(A)=2 对于一个有向图或无向图,存在以下关系: 带权图 如果图的边或弧具有一个与它相关的数时,这个数就称为该边或弧的权。 图中的每条边都具有权时,这个带权图被称为网络,简称为网。 路径 在图 G=(V, E) 中, 若从顶点 vi 出发, 沿一些边经过一些顶点 vp1, vp2, …, vpm,到达顶点vj。则称顶点序列 ( vi vp1 vp2 ... vpm vj ) 为从顶点vi 到顶点 vj 的路径。它经过的边(vi, vp1)、(vp1, vp2)、...、(vpm, vj)应是属于E的边。 路径长度 非带权图的路径长度是指此路径上边/弧的条数。 带权图的路径长度是指路径上各边/弧的权之和。 简单路径 若路径上各顶点 v1,v2,...,vm 均不互相重复, 则称这样的路径为简单路径。 回路 若路径上第一个顶点 v1 与最后一个顶点vm 重合(路径长度≥2), 则称这样的路径为简单回路或简单环。 例如:(0,1,3,2)是简单路径; ( 0,1,3,0,1,2)是非简单路径; (0,1,3,0)是简单回路。 有根图 在一个有向图中,若存在一个顶点v,从该顶点有路径可到达图中其它的所有顶点,则称这个有向图为有根图,v称为该图的根。 连通图与连通分量 在无向图中, 若从顶点v1到顶点v2有路径, 则称顶点v1与v2是连通的。如果图中任意一对顶点都是连通的, 则称此图是连通图。非连通图的极大连通子图叫做连通分量。 强连通图与强连通分量 在有向图中, 若对于每一对顶点vi和vj, 都存在一条从vi到vj和从vj到vi的路径, 则称此图是强连通图。非强连通图的极大强连通子图叫做强连通分量。 7.2 图的存储结构 7.2.1 邻接矩阵 顶点表: 一个记录各个顶点信息的一维数组。 邻接矩阵:一个表示各个顶点之间的关系(边或弧)的二维数组。 设图 G = (V, E)是一个有 n 个顶点的图,则图的邻接矩阵A[n][n] 定义为: 图的邻接矩阵存储实例 有向图G2和无向图G1的邻接矩阵分别为A1和A2: 网络的邻接矩阵表示 网络,邻接矩阵元素A[i,j]可按以下规则取值: 当一个图用邻接矩阵表示时,可用以下数据类型来说明: #define n //图的顶点数 #define e //图的边数 typedef char vextype; //顶点的数据类型 typedef float adjtype; //边的权值的数据类型 typedef struct { vextype vexs[n]; //

文档评论(0)

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

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

1亿VIP精品文档

相关文档