数据结构第七章图

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如果用来表示稀疏图,则会造成较大的空间浪费。 p146 图7-14
北京邮电大学世纪学院
算法与数据结构 第七章
7.2.2 邻接表
图的邻接矩阵表示法虽然有其自身的优点,但当图的 边数较少时,邻接矩阵就会出现大量的0元素,存储这些0 元素将耗费大量的存储空间。因此,对于稀疏图,可以用
邻接表去存储。
北京邮电大学世纪学院
表结点
TD(v0)=2 TD(v1)=3 TD(v2)=3 TD(v3)=2 TD(v4)=2
表头结点
北京邮电大学世纪学院
算法与数据结构 第七章
(1)若无向图中有 n 个顶点、e 条边,则其邻接表需 n
个头结点和2e 个表结点。 所以无向图的边数等于所有表结点个数之和的一半。 (2)无向图中顶点 vi 的度为第 i 个单链表中的结点数目。
北京邮电大学世纪学院
算法与数据结构 第七章
13. 边的权 图的边(或弧)带有与该边相关的数据信息。 通常权是非负实数,可以表示从一个顶点到另一个顶点的 距离或耗费等信息。
14. 网
边(或弧)上带权的图称为网
北京邮电大学世纪学院
算法与数据结构 第七章
15. 路径与回路 (1)路径 在图G中,从顶点vi出发,经过一系列的边或弧能够到 达顶点vj,则称顶点vi到顶点vj的顶点序列为从顶点vi到顶 点vj的路径。
17. 强连通图与强连通分量(有向图) (1)强连通图 在有向图中,对于任意一对顶点vi和vj,若从vi到vj,及 vj到vi都有路径,称该有向图是强连通图。
强连通图
非强连通图
北京邮电大学世纪学院
算法与数据结构 第七章
(2) 强连通分量
有向图的极大强连通子图称为强连通分量。
强连通图的分量只有一个,就是其本身。 非强连通图的连通分量有多个。
北京邮电大学世纪学院
算法与数据结构 第七章
5. 无向完全图 若图G是具有n个顶点,e条边的无向图,则其顶点数与 边数的关系为:
0 e n(n 1) / 2
把恰有n(n-1)/2条边的无向图称为无向完全图。
无向完全图
北京邮电大学世纪学院
算法与数据结构 第七章
6. 有向完全图 若图G是具有n个顶点,e条边的有向图,则其顶点数与 边数的关系为:
2. 邻接矩阵的复杂度分析
采用邻接矩阵表示图,直观方便,运算简单。
(1)时间复杂度
边查找:对于查找图中任两个顶点i和j之间有无边,以及边上的
权值,可根据i, j的值随机查找,时间复杂性为O(1)。
顶点度计算:计算一个顶点的度(或入度、出度)和邻接点,
其时间复杂性为O(n)。
(2)空间复杂度:O(n2)
北京邮电大学世纪学院
算法与数据结构 第七章
(2)有向图的邻接表
OD(v0)=2
OD(v1)=0 OD(v2)=1 OD(v3)=1 ID(v0)=1 ID(v1)=1 ID(v2)=1 ID(v3)=1
北京邮电大学世纪学院
算法与数据结构 第七章
邻接表:
(1)有向图中顶点 vi 的出度为第 i 个单链表中的结点数
北京邮电大学世纪学院
算法与数据结构 第七章
TD(v0)=2, TD(v1)=3……
TD(v0)=OD(v0)+ID(v0)=2+1=3
北京邮电大学世纪学院
算法与数据结构 第七章
12. 子图
设有两个图G=(V,E)、G1=(V1,E1),若
V 1 V 且E1 E
则称 G1是G的子图;
(b)、(c) 是 (a) 的子图
顶点 vi 的入度是邻接矩阵中第 i 列中 1 的个数。
OD(v0)=2 OD(v1)=1 OD(v2)=1 OD(v3)=1 ID(v0)=2
ID(v1)=1
ID(v2)=1 ID(v3)=1
北京邮电大学世纪学院
算法与数据结构 第七章
(3)网的邻接矩阵
北京邮电大学世纪学院
算法与数据结构 第七章
北京邮电大学世纪学院
算法与数据结构 第七章
7.1.1 图的定义
有序偶:有先后 顺序的一对数。
一个图(Graph)是一个序偶<V, E>,记为G = <V, E> 其中: (1)V = {v1, v2, …, vn}是有限非空集合,vi称为顶点,V称为 结点集。 (2)E是有限集合,称为边集。 E中的每个元素都是V中顶点偶对,称之为边。
2. 邻接表的空间复杂度分析
在图的邻接表和逆邻接表表示中,
(1)表头需要占用n个头结点的存储空间,所有边结点需要占 用2e(对于无向图)或e(对于有向图)个边结点空间,所以其
TD(v0)=2 TD(v1)=3
TD(v2)=2
TD(v3)=2 TD(v4)=3
北京邮电大学世纪学院
算法与数据结构 第七章
(2)有向图的邻接矩阵
北京邮电大学世纪学院
算法与数据结构 第七章
特点: 有向图邻接矩阵不一定对 称;
有向图中 : 顶点 vi 的出度是邻接矩阵中第 i 行中 1 的个数。
北京邮电大学世纪学院
算法与数据结构 第七章
无向图G1
顶点集合V1={v0,v1,v2,v3,v4}; 边集合E1={(v0,v1),(v0,v3),(v1,v2),(v1,v4),(v2,v3)(v2,v4)};
北京邮电大学世纪学院
算法与数据结构 第七章
3.有向边
若顶点vi,vj之间的边有方向,则称这条边为有向边(弧),
一般情况下,图的路径不唯一。
北京邮电大学世纪学院
算法与数据结构 第七章
v1到v4的路径: (v1,v2,v4)
(v1,v3,v4)……
v1到v4的路径: (v1,v2,v3,v4) (v1,v4) (v1, v2,v5,v4)……
北京邮电大学世纪学院
算法与数据结构 第七章
(2)简单路径 在一条路径中若没有重复相同的顶点,该路径称为简单 路径。
当图带权(网)时:
w ij 若(vi , v j ) E AdjMatrix[i, j] 其他情况
北京邮电大学世纪学院
算法与数据结构 第七章
(1)无向图的邻接矩阵
北京邮电大学世纪学院
算法与数据结构 第七章
特点:
无向图的邻接矩阵对称,可压缩存储; 无向图中顶点 vi 的度是邻接矩阵中第 i 行 中1 的个数。
强连通分量
北京邮电大学世纪学院
算法与数据结构 第七章
非强连通图的多个强连通分量
算法与数据结构 第一章
7.2 图的存储结构
北京邮电大学世纪学院
算法与数据结构 第七章
图的信息
• 顶点的数据 • 顶点间的关系
顶点信息
• 顶点值
边的信息
• 邻接矩阵 • 邻接表 • 等
北京邮电大学世纪学院
算法与数据结构 第七章
算法与数据结构 第七章
1. 邻接表的定义
邻接表是一种顺序存储与链式存储相结合的存储方
法,顺序存储部分用来保存图中顶点的信息,链式存储 部分用来保存图中边(或弧的信息)。
表头结点:图中的顶点,用一个一维数组存放 邻接表 表结点 :邻接顶点在数组中的索引
北京邮电大学世纪学院
算法与数据结构 第七章
(1)无向图的邻接表
用尖括号表示为<vi,vj>。 弧的方向规定为从起点到终点,并用箭头表示。
vi vi vi vj
起点 弧尾
终点 弧头
北京邮wk.baidu.com大学世纪学院
算法与数据结构 第七章
4. 有向图
如果图中任意两个顶点之间的边都是有向边,则称该图为
有向图。
有向图G2
顶点集合V2={v0 v1, v2, v3}; 弧集合E2={ <v0,v1> , <v0,v2>, <v2,v3>, <v3, v0> };
(3)路径长度 在非带权图中,路径上边或弧的数目称为该路径长度; 在带权图中,路径长度是路径中各弧上的权之和。
(v1,v2,v4,v1,v3,v4)
路径长度为5
(a,b,e,d)
路径长度为 1320+850+1670
北京邮电大学世纪学院
算法与数据结构 第七章
(4)回路 若路径上第一个顶点 与最后一个顶点 重合, 则称这样的 路径为回路或环。
目。 (2)顶点 vi 的入度为整个单链表中邻接点域值是i 的结 点个数。 找出度易,找入度难。 (3)图的弧数等于所有表结点个数之和。
北京邮电大学世纪学院
算法与数据结构 第七章
为了便于求顶点的入度,可以定义逆邻接表: 以顶点vi为终点建立邻接表。
ID(v0)=1
ID(v1)=1
ID(v2)=1 ID(v3)=1 OD(v0)=2 OD(v1)=0 OD(v2)=1 OD(v3)=1
简单路径: (v1,v2,v4) (v1,v3,v4) 非简单路径 (v1,v2,v4,v1,v3,v4)
北京邮电大学世纪学院
算法与数据结构 第七章
简单路径 (v1,v2,v3,v4)
(v1,v4)
(v1, v2,v5,v4) 非简单路径
(v1, v2,v3,v5,v2)
北京邮电大学世纪学院
算法与数据结构 第七章
北京邮电大学世纪学院
算法与数据结构 第七章
逆邻接表: (1)顶点 vi 的入度为第 i 个单链表中的结点个数。 (2)顶点 vi 的出度为整个单链表中邻接点域值是i 的结点 个数。 找入度易,找出度难。
北京邮电大学世纪学院
算法与数据结构 第七章
(3)网的邻接表
北京邮电大学世纪学院
算法与数据结构 第七章
7.2.1 邻接矩阵
顶点:用一个一维数组存放 图
邻接矩阵
边 :用一个二维数组存放
有向图邻接矩阵
邻接矩阵
无向图邻接矩阵
北京邮电大学世纪学院
算法与数据结构 第七章
1. 邻接矩阵的定义
假设图G=(V, E)有n个顶点,则邻接矩阵AdjMatrix是一个 n×n的方阵,定义为:
1 若(vi , v j ) E(或<vi , v j > E) AdjMatrix[i, j] 0 其他情况
0 e n(n 1)
把恰有n(n-1)条边的有向图称为有向完全图。
有向完全图
北京邮电大学世纪学院
算法与数据结构 第七章
7. 稀疏图 边数相对较少( e n log2 )的图称为稀疏图。
n
8. 稠密图 边数相对较多的图称为稠密图。
9. 邻接点
边的两个顶点。 10. 关联边
若边e= (v, u), 则称顶点v、u 关联边e。
北京邮电大学世纪学院
算法与数据结构 第七章
当图的边集为空时,图G还是否存在?
还存在,但此时图G只有顶点,即图有无边、只有
点的情形。 图的定义的说明:
P140 (1)、(2)、(3)
北京邮电大学世纪学院
算法与数据结构 第七章
7.1.2 图的基本术语
1.无向边 若顶点vi,vj之间的边没有方向,则称这条边为无向边,用 圆括号表示为(vi,vj))或(vj,vi),两个表示相同。 2. 无向图 如果图中任意两个顶点之间的边都是无向边,则称该图为 无向图。
回路:
(v1,v2,v4,v1)
(v1,v3,v4,v1) (v1,v2,v4,v1,v3,v4,v1) 回路:
(v1,v2,v5,v4,v1)
(v1,v4,v3,v2,v1)
北京邮电大学世纪学院
算法与数据结构 第七章
(5)简单回路(简单环) 在 一个回路中,除第一个与最后一个顶点之外,其余项 点不重复出现的回路称为简单回路(简单环)。
(v1,v2,v4,v1,v3,v4,v1)不是简单回路
北京邮电大学世纪学院
算法与数据结构 第七章
16. 连通图与连通分量(无向图) (1)连通图 在无向图中,如果从顶点vi到顶点vj有路径,则称vi和vj连 通。如果图中任意两个顶点之间都连通,则称该图为连通 图,否则,称该图为非连通图。
北京邮电大学世纪学院
北京邮电大学世纪学院
第七章 图
7.1 图的定义与基本术语
目 录
7.2 图的存储结构 7.3 图的遍历
7.4 图的应用
算法与数据结构 第一章
7.1 图的定义与基本术语
北京邮电大学世纪学院
算法与数据结构 第七章
结点的前趋后继关系有限定
线性表 树
结 点 间 关 系 扩 展

结点的前趋后继关系无限定 多对多的非线性结构
算法与数据结构 第七章
(2) 连通分量
无向图的极大连通子图称为连通分量。
极大:对子图再增加其他顶点,子图就不连通了。 连通图的分量只有一个,就是其本身。 非连通图的连通分量有多个。
连通图的连通分量
北京邮电大学世纪学院
算法与数据结构 第七章
非连通图的多个连通分量
北京邮电大学世纪学院
算法与数据结构 第七章
北京邮电大学世纪学院
算法与数据结构 第七章
11. 顶点的度
(1)在无向图中 顶点v的度 = 与v相关联的边的数目 记为TD(v)。 (2)在有向图中
顶点v的出度=以v为起点有向边数,记为OT(v)。
顶点v的入度=以v为终点有向边数,记为IT(v)。 顶点v的度= v的出度+v的入度
TD(v) = OT(v)+ IT(v)
相关文档
最新文档