数据结构学习指导第7章图.docx
- 文档编号:2401209
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:39
- 大小:211.55KB
数据结构学习指导第7章图.docx
《数据结构学习指导第7章图.docx》由会员分享,可在线阅读,更多相关《数据结构学习指导第7章图.docx(39页珍藏版)》请在冰豆网上搜索。
数据结构学习指导第7章图
第七章图
本章要点
一、图的基本概念
1.图的定义
图是图形结构的简称。
它是由一个非空的顶点的集合和一个描述顶点之间的关系(边)的集合组成。
记为:
G=(V,E);
V:
顶点集(Vertexset),记为V(G);
E:
V中顶点偶对(边)的有穷集(Edgeset),即边集E(G)。
在一个图中,若任意两个顶点之间的连线没有方向,称该图为无向图,点间连线称为边。
反之称为有向图。
分别用圆括号和尖括号表示,例(X,Y)、
2.图的基本术语
1)端点和邻接点
2)顶点的度、入度和出度
无向图中顶点的度是以该顶点为一个端点的数目。
有向图中顶点的度D(v)=ID(v)+OD(v)。
ID(v):
该顶点入边的数目,即入度。
OD(v):
该顶点出边的数目,即出度。
3)完全图、稠密图和稀疏图
若无向图的每两个顶点之间都存在着一条边,有向图中的每两个顶点之间都存在着方向相反的两条边,则此图为完全图。
显然:
无向完全图有n(n-1)条边,有向完全图有n(n-1)条边。
当e≈n(n-1)(或n(n-1))时,为稠密图,反之为稀疏图。
4)子图
若G’=(V’,E’)与G=(V,E)存在着V’是V的子集,E’是E的子集关系,则称G’是G的子集。
5)路径、路径长度和回路
路径:
从一个顶点到另一个顶点所经过的顶点序列。
路径长度:
是指该路径上经过的边的数目。
回路:
路径上的两个端点相同。
6)连通和连通分量
连通:
从一个端点到另一个端点有路径,则这两个端点是连通的。
连通分量:
无向图G的极大连通子图称为G的连通分量。
7)强连通图和强连通分量
强连通图:
在有向图G中,若任意两个顶点之间都是连通的,则G是强连通图。
强连通分量:
G的极大强连通子图成为G的强连通分量。
8)权和网
权:
每条边上具有含义的数值。
网:
带权图。
3.图的抽象数据类型。
二、图的存储结构
1.邻接矩阵方法(顺序存储)
用一维数组存储图中顶点的信息,用矩阵(二维数组)表示图中各顶点之间的相邻关系。
设图G=(V,E)有N个顶点,则矩阵A为一个N×N的N阶矩阵。
矩阵含义和矩阵内容:
P211
特点:
1)无向图的邻接矩阵一定是对称矩阵。
2)有向图及其邻接矩阵是非对称矩阵。
3)D(Vi)==
即顶点Vi的度恒等于第i行或第i列上非零元素的个数。
第i顶点的入度=第i列非零元素的个数;
第i顶点的出度=第i行非零元素的个数;
4)邻接矩阵可以方便地确定图中两顶点之间是否直接相连。
5)可用邻接矩阵表示网。
类型说明:
1)typedefcharVertexType;//顶点元素类型
2)constintMaxVertexNum=20;//不小于图的顶点数n
3)constintMaxEdgeNum=10;//不小于图的边数e
4)typedefVertexTypevexlist[MaxVertexNum];
//存储顶点信息的一维数组
5)typedefintadjmatrix[MaxVertexNum][MaxVertexNum];
//存储顶点之间关系的二维数组
2.邻接表
邻接表是对图中的每个顶点建立一个邻接关系的单链表。
类型定义
1)typedefcharVertexType;//顶点元素类型
2)constintMaxVertexNum=20;//不小于图的顶点数n
3)constintMaxEdgeNum=10;//不小于图的边数e
4)typedefVertexTypevexlist[MaxVertexNum];
//存储顶点信息的一维数组
5)structedgenode{
intadjvex;
intweight;
edgenode*next;
};
6)typedefedgenode*adjlist[MaxVertexNum];
//存储表头指针的数组
3.边集数组(主要讨论边集)
边集数组是利用一维数组(多个值域)存储图中所有边的一种方法。
类型定义
1)typedefcharVertexType;//顶点元素类型
2)constintMaxVertexNum=20;//不小于图的顶点数n
3)constintMaxEdgeNum=10;//不小于图的边数e
4)typedefVertexTypevexlist[MaxVertexNum];
//存储顶点信息的一维数组
5)定义边集数组的元素类型
structedge{
intfromvex;//起点域
intendvex;//终点域
intweight;//权
};
6)typedefedgeedgeset[MaxEdgNum];//定义边集数组
三、图的遍历
1.深度优先遍历(DepthFirstSesrch)
深度优先遍历类似于树的先根遍历。
基本思想是首先从图中某个顶点出发,访问此顶点,然后有依次从V的未被访问的邻接点出发深度优先遍历图,直至图中所有和v有路径相通的顶点都被访问到,若此时图中尚有顶点未被访问,则另选图中未被访问的顶点做起始点,重复上述过程。
2.广度优先遍历(BreadthFirstSearch)
广度优先遍历类似于树的按层遍历。
基本思想是首先访问初始点Vi,Visited[I]=1,访问Vi的所有未被访问的邻接点Vi1、Vi2Vi3……Vit标记为访问过。
按照Vi1、Vi2Vi3……Vit的顺序访问每一个顶点的未访问的邻接点,并标之。
依次类推,直至所有和Vi有路径相通的顶点都被访问过。
四、生成树和最小生成树
1.生成树的基本概念
生成树:
连通图G=(V,E)和G'=(V,E'),若V(G)=V(G'),E(G')⊆E(G),且边集E(G')中的边既能将图中所有的顶点连通而没有回路,则称子图G'是G的一棵生成树。
可见:
1)有n个顶点的连通图G,其生成树G'必有n-1条边。
2)生成树是无回路的连通图,再增加一条边,就出现回路,再减少一条边,则成为非连通图。
3)权值最小的生成树称最小生成树。
2.最小生成树的构造
1)Prim算法
算法描述:
略。
2)Kruskal算法
算法描述:
i)TE={φ},U=V
ii)当TE中边数小于N-1时,重复做:
在E中选取权值最小边〈Vi,Vj〉,并从E中删除之。
如果Vi,Vj落在T中不同的连通分量上,则将此边加入到TE中去,否则丢掉该边。
iii)结束。
五、最短路径
1.单源最短路径(Dijkstra算法)
算法基本思想:
把V(G)所的顶点分成两组S,T。
S为已求出最短路径的顶点的集合。
T为未确定最短路径的顶点的集合。
按路径长度递增的次序逐个把T中顶点加入到S中,直到S中顶点个数为N。
2.求每对顶点之间的最短路径(Floyd算法)
略。
六、拓扑排序
1.拓扑排序的定义
1)AOV网:
顶点表示活动,边表示活动间前后关系的有向图称作“顶点活动网”。
2)AOV网应该是一个有向无环图。
3)在AOV网中若不存在回路,则所有活动可排列成一个线性序列,使每个活动的所有前驱活动都排在该活动的前面,此序列称作“拓扑序列”,由AOV网构造拓扑序列的过程叫做拓扑排序。
4)AOV网的拓扑序列不是唯一的,满足上述定义的任一线性序列都称作它的拓扑序列。
2.构造拓扑序列的方法
1)方法描述
i)选择一个入度为0的顶点并输出之;
ii)从网中删除此顶点及其所有出边。
2)解决办法
i)用d[]数组存储所有顶点的入度;
ii)假设有一个栈,栈指针变量为top,栈底为top=-1,用这个栈存储所有入度为0的顶点;
iii)这个“真实的栈”是不存在的,没有建立栈,栈的变化也不是通过top++和top――实现的;
iv)栈是利用了d[]数组和其下标,所以d[i]、i、top之间存在着相互的赋值关系,在算法中可以看到:
D[i]=top;
Top=I;
以及:
D[k]=top;
Top=k;
等语句。
七、关键路径
1.关键路径的定义
与AOV-网相对应的是AOE-网(ActivityOnEdge),即用边表示活动的网。
AOE-网是一个带权的有向无环图,顶点表示事件(Event),弧表示活动,权表示活动的持续时间。
2.关键路径的特点
1)只有在某个顶点所代表的事件发生以后,该顶点引发的活动才能开始。
2)进入某事件的所有边所代表的活动都已完成,该顶点所代表的事件才能发生。
时间余量为0的活动为关键活动。
从源点到汇点,由关键活动组成的路径为关键路径。
本章重点
图的三种存储结构;图的遍历;最小生成树、最短路径、拓扑排序及关键路径的思想。
本章难点
图的遍历的相关算法的递归过程;图的相关算法分析。
本章习题及习题答案
一、填空
1.图由非空顶点集和________所组成。
无向图某个顶点的度是________。
2.在图的概念中路径长度是指该路径上经过的边的________,而某条边上标有的数值称之为该边的________。
3.在一个具有n个顶点的无向完全图中,包含有________条边,在一个具有n个顶点的有向完全图中,包含有________条边。
4.在一个图中,所有顶点的度数之和等于所有边数的________倍。
5.在一个具有n个顶点的无向图中,要连通所有顶点则至少需要________条边。
6.对于一个具有n个顶点和e条边的有向图和无向图,若采用边集数组表示,则存于数组中的边数分别为________和________条。
7.表示图的三种常用的存储结构为________、________和________。
8.对于一个具有n个顶点和e条边的有向图和无向图,在其对应的邻接表中,所含边结点分别有________个和________个。
9.在无向图G的邻接矩阵A中,若A[i][j]等于1,则A[j][i]等于________。
10.已知一个图的邻接矩阵表示,计算第i个结点的入度的方法是________。
11.设某无向图G中有n个顶点,用邻接矩阵A作为该图的存储结构,则顶点i和顶点j互为邻接点的条件是________。
12.对于一个具有n个顶点的图,若采用邻接矩阵表示,则其矩阵大小为________。
13.在有向图的邻接表和逆邻接表表示中,每个顶点邻接表分别链接着该点的所有________和________结点。
14.对于一个具有n个顶点和e条边的无向图,当分别采用邻接矩阵,邻接表和边集数组表示时,求任一顶点数的时间复杂度依次为________。
15.一个图的________表示法是唯一的,而________表示法是不唯一的。
16.根据图的存储结构进行某种次序的遍历,得到的顶点序列是________的。
17.已知图G的邻接表如图所示,其从顶点v1出发的深度有限搜索序列为________,其从顶点v1出发的宽度优先搜索序列为________。
v3
18.对用邻接矩阵表示的有向图进行任一种遍历时,其时间复杂度为________。
对用邻接表表示的有向图进行任一种遍历时,其时间复杂度为________。
19.对于一个有n个顶点和e条边的连通图,其生成树中的顶点数和边数分别为________和________。
20.设有向图G中有向边的集合E={<1,2>,<2,3>,<1,4>,<4,2>,<4,3>
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 学习 指导 章图
![提示](https://static.bdocx.com/images/bang_tan.gif)