[高等教育]济南大学数据结构 第七章.doc
《[高等教育]济南大学数据结构 第七章.doc》由会员分享,可在线阅读,更多相关《[高等教育]济南大学数据结构 第七章.doc(32页珍藏版)》请在三一办公上搜索。
1、第七章 图ABCDE图是一种较线性表和树更为复杂的数据结构。线性表: 线性结构(前驱、后继)树: 层次结构(父子)图: 任意两个数据元素之间都可能相关(邻接) 7.1 图的定义和基本术语图 G 是由两个集合顶点集 V(G) 和边集 E(G) 组成的,记作G=( V(G),E(G) ),简称G=(V,E)。V是顶点的有穷非空集合 E是两个顶点之间的关系,即边的有穷集合 ABCDE无向图和有向图 无向图: 边是顶点的无序对,即边没有方向性。v1v2v3v5v4V = v1 , v2 , v3 , v4 , v5 E = ( v1 , v2 ) , ( v1 , v4 ) , ( v2 , v3 )
2、 , ( v2 , v5 ) , ( v3 , v4 ) , ( v3 , v5 ) ( v1 , v2 )表示顶点 v1 和 v2 之间的边( v1 , v2 ) = ( v2 , v1 )有向图: 其边是顶点的有序对,即边有方向性。v1v2v4v3V = v1 , v2 , v3 , v4 E = , , , 通常有向图的边称为弧,表示顶点 v1 到 v2 的弧。称 v1 为弧尾,称 v2 为弧头。 带权无向图(无向网) 和 带权有向图(有向网)有时对图的边或弧赋予相关的数值,这种与图的边或弧相关的数值叫做权。 ABCDE53821497这种带权的图通常称为网。 带权的无向图称为无向网。带
3、权的有向图称为有向网。性质: 若用 n 表示图中顶点数目,用 e 表示边或弧的数目,若在图中不存在顶点到自身的边或弧,则对于有向图,0 e n(n-1)对于无向图,0 e 1/2n(n-1)证明: 0 e 显然成立对有向图来说, 每个顶点至多可发出 n-1 条弧,共 n 个顶点,故至多有 n(n-1) 条弧,即 e n(n-1) ;对无向图来说,由于边无方向,则任一两个顶点 v1 和 v2,都有 ( v1 , v2 ) = ( v2 , v1 ) ,故至多有 n(n-1) 条边 ;完全图、有向完全图、稀疏图、稠密图 有 1/2n(n-1) 条边的无向图称为完全图。 有 n(n-1) 条弧的有向
4、图称为有向完全图。 v1v2v4v3v1v2v3有很少条边或弧的图称为稀疏图。 反之称为稠密图。 子图假设有两个图 G=(V, E) 和 G=(V, E) ,如果 V V,且 E E,则称 G 为 G 的子图。 v1v2v4v3求子图v1v1v3v1v4v3v1v2v4v3v1v2v4v3v1v2v3v5v4子图有v1v2v3v5v1v2v5v4v1v2v3v5v4邻接与关联vv对于无向图 G=(V, E),如果存在边 (v, v),则称顶点 v 和 v 互为邻接点,即 v 和 v 相邻接。 称边 (v, v) 与顶点 v 和 v 相关联。 vv对于有向图 G=(V, E) ,如果存在弧 ,则
5、称顶点 v 邻接到顶点 v,顶点 v 邻接自顶点 v 。 称弧 和顶点 v, v 相关联。顶点的度对于无向图,顶点 v 的度是和 v 相关联的边的数目,记做TD(v)。 v1v2v3v5v4顶点 v3 的度为对于有向图,顶点 v 的度 TD(V) 分为两部分出度、入度。 以顶点 v 为头的弧的数目称为 v 的入度,记为ID(v) ;以顶点 v 为尾的弧的数目称为 v 的出度,记为OD(v); 顶点 v 的度为 TD(v) = ID(v) + OD(v)。 v1v2v4v3顶点 v1 的出度为 2顶点 v1 的入度为 1顶点 v1 的度为 3性质: 对于一个图(无向图、有向图),如果顶点 vi
6、的度为TD(vi),那么具有 n 个顶点、e 条边或弧的图,必满足如下关系e = TD(vi)12i = 1nv1v2v3v5v4v1v2v4v3无向图、有向图的边或弧均计算两遍。路径、回路(环)、链、简单路径、简单回路无向图 G 中若存在一条有穷非空序列 w = v0 e1 v1 e2 v2 ek vk ,其中 vi 和 ei 分别为顶点和边,则称 w 是从顶点 v0 到 vk 的一条路径。v0v1v2vk-1vk. . .e1e2ek顶点 v0 和 vk 分别称为路径 w 的起点和终点。路径的长度是路径上的边的数目。w 的长度为 k起点和终点相同的路径称为回路(环)。v0v1v2vk-1v
7、k. . .e1e2ek若路径 w 的边 e1 , e2 , , ek 互不相同,则称 w 为链。若路径 w 的顶点 v0 , v1 , 。, vk 互不相同,则称 w 为简单路径。链是否为简单路径? 不一定简单路径是否为链? 一定起点和终点相同的简单路径称为简单回路(简单环)。e1e2e3e4e5有向图 G 中若存在一条有穷非空序列 w = v0 e1 v1 e2 v2 ek vk ,其中 vi 和 ei 分别为顶点和弧,则称 w 是从顶点 v0 到 vk 的一条路径。v0v1v2vk-1vk. . .e1e2ek链简单路径回路简单回路连通、连通图、连通分量、强连通图、强连通分量无向图G,如
8、果从顶点 v 到顶点 v 有路径,则称 v 和 v 是连通的。 如果对于无向图 G 中任意两个顶点 vi , vj V, vi 和 vj 都是连通的,则称 G 是连通图。 v1v2v3v5v4是否为连通图连通分量指的是无向图中的极大连通子图。 ABCLHDEFGH非连通图连通分量为ABCLHDEFGHv1v2v3v5v4有向图G,如果从顶点 v 到顶点 v 有路径 或 从顶点 v 到顶点 v 有路径,则称 v 和 v 是连通的。 在有向图 G 中,如果对于每一对 vi, vj V,vivj ,从 vi 到 vj 和 从 vj 到 vi 都存在路径,则称 G 是强连通图。 v1v2v4v3是否为
9、强连通图有向图中的极大强连通子图称作有向图的强连通分量。 v1v2v4v3非强连通图强连通分量v2v1v4v3注意生成树、生成森林 对无向图而言一个连通图 G 的一个包含所有顶点的极小连通子图 T 是 (1) T 包含 G 的所有顶点 n 个(2) T 为连通子图(3) T 包含的边数最少T 是一棵有 n 个顶点,n-1 条边的生成树。ABCLHJ性质: 一个有n个顶点的连通图的生成树有且仅有n-1条边。1. 如果一棵生成树有 n 个顶点和小于 n-1 条边,则为非连通图。构成一棵 n 顶点生成树需要 n-1 条边,少于 n-1 ,则必有边断开,不再连通。2. 如果一棵生成树有 n 个顶点和多
10、于 n-1 条边,则一定有环。构成一棵 n 顶点生成树需要 n-1 条边,若再添加一条边,必会使得与它关联的那两个顶点之间有了第二条路经。ABCLHJ性质: 一个连通图的生成树并不唯一ABCLHJABCLHJABCLHJ生成树ABCLHJ删除环中的任一条边非连通图的各连通分量的生成树构成了非连通图的生成森林。ABCLHDEFGS生成森林ABCLHDEFGS7.2 图的存储结构顺序存储邻接矩阵链式存储邻接表邻接多重表十字链表7.2.1 邻接矩阵设图 G = ( V ,E ) 具有 n(n1) 个顶点 v1 , v2 , 。 , vn 和 m 条边或弧 e1 , e2 , , em ,则 G 的邻
11、接矩阵是 nn 阶矩阵,记为 A(G) 。邻接矩阵存放 n 个顶点信息和 n2 条边或弧信息。其每一个元素 aij 定义为:aij = 0 顶点 vi 与 vj 不相邻接1 顶点 vi 与 vj 相邻接例,有向图 Gv1v2v4v3A(G) = 1 2 3 412340 1 1 00 0 0 00 0 0 11 0 0 0 例,无向图 Gv1v2v3v5v40 1 0 1 01 0 1 0 10 1 0 1 11 0 1 0 00 1 1 0 0A(G) = 1 2 3 4 512345邻接矩阵数据类型定义int AdjMatrixVertex_NUMVertex_NUM;优点:1. 容易判断
12、任意两个顶点之间是否有边或弧。2. 容易求取各个顶点的度。例无向图 Gv1v2v3v5v40 1 0 1 01 0 1 0 10 1 0 1 11 0 1 0 00 1 1 0 01 2 3 4 5A(G) = 12345无向图,顶点 vi 的度是邻接矩阵中第 i 行或第 i 列的元素之和。例 G1中,v1 的度为 2 ,v2 的度为 3 。v1v2v4v31 2 3 40 1 1 00 0 0 00 0 0 11 0 0 0A(G) = 1234有向图,顶点 vi 的出度是邻接矩阵中第 i 行的元素之和。顶点 vi 的入度是邻接矩阵中第 i 列的元素之和。例 v1 的度为 2+1=3。1 2
13、 3 412340 1 1 00 0 0 00 0 0 11 0 0 00 1 0 1 01 0 1 0 10 1 0 1 11 0 1 0 00 1 1 0 01 2 3 4 512345无向图有向图v1v2v3v5v4v1v2v4v3无向图的邻接矩阵都是对称矩阵。有向图的邻接矩阵一般不对称。带权图(网) 的邻接矩阵v65v1v2v3v5v4487935651 1 2 3 4 5 6 5 7 4 8 9 5 6 5 A = 123456 3 1 aij = wij 顶点 vi 与 vj 相邻接 顶点 vi 与 vj 不相邻接7.2.2 邻接表对图中每一个顶点建立一个单链表,指示与该顶点邻接的
14、顶点和关联的边或出弧。v1v2v3v5v4e1e2e3e4e5e601234v1v2v3v4v53e21e14e42e30e14e63e51e32e50e22e61e4adjvexnextarcarcinfo边结点vexinfofirstarc顶点结点vexinfo : 顶点的信息 adjvex : 邻接顶点位置firstarc : 第一条关联边结点 arcinfo : 边的信息 nextarc : 下一条关联边结点邻接表数据类型定义typedef struct ArcNode int adjvex ; ArcInfo data ; struct ArcNode * nextarc ; Arc
15、Node ;typedef struct VNode VertexInfo data ; ArcNode * firstarc ; Vnode , AdjListVertex_Num ;无向图 Gv1v2v3v5v4无向图 Ge1e2e3e4e5e601234v1v2v3v4v53e21e14e42e30e14e63e51e32e50e22e61e4如何获取顶点的度?顶点 vi 的度为第 i 条链中的结点数。需要多少存储空间?(设n个顶点,e条边)n + 2e有向图 Ge1e2v1v2v4v3e3e42e21e13e30e40123v1v2v3v4如何获取顶点的度?顶点 vi 的出度为邻接表第
16、 i 条链中的结点数。顶点 vi 的入度为逆邻接表第 i 条链中的结点数。需要多少存储空间?2n + 2e为了方便求顶点的入度,引入逆邻接表0e13e40e22e30123v1v2v3v40 1 0 1 01 0 1 0 10 1 0 1 11 0 1 0 001 1 0 01 2 3 4 51234501234v1v2v3v4v53e21e14e42e30e14e63e51e32e50e22e61e4邻接矩阵与邻接表存储空间求顶点的度判断两个顶点是否关联7.3 图的遍历与树的遍历类似,如果从图中某一顶点出发访遍图中所有顶点,且使每一个顶点仅被访问一次,这一过程称为图的遍历。图的遍历算法是求解
17、图的连通性问题、生成树、和拓扑排序等算法的基础。通常有两条遍历图的路径: 深度优先搜索、广度优先搜索。7.3.1 深度优先搜索v1v2v3v5v4v6v7v8图可分为三部分:基结点第一个邻接结点所能导出的子图其它邻接顶点所能导出的子图深度优先搜索是类似于树的先序遍历的一种方法。过程分析v1v2v3v5v4v6v7v8v1v2v3v4v6v8v5v7深度优先搜索顺序: v1 v2 v4 v8 v5 v3 v6 v7 栈实现深度优先搜索v1v2v3v4v6v8v5v7v1v2v4v8v5v3v6v7总是从栈顶出发搜索!栈顶元素必须等到所有邻接顶点均被访问过后方能出栈!深度优先搜索顺序: v1 v2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高等教育 高等教育济南大学数据结构 第七章 济南 大学 数据结构 第七
链接地址:https://www.31ppt.com/p-4563030.html