数据结构 第六章教学课件 .ppt
《数据结构 第六章教学课件 .ppt》由会员分享,可在线阅读,更多相关《数据结构 第六章教学课件 .ppt(59页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据结构 第六章教学课件 第六章第六章 图图数据结构数据结构目目录录4 41 12 23 3 图的定义及其常用术语图的定义及其常用术语图的存储结构图的存储结构图的遍历图的遍历生成树和最小生成树生成树和最小生成树5 5图的应用图的应用第六章第六章第六章第六章图图图图总总体要求体要求了解图的定义和术语了解图的定义和术语掌握图的两种存储结构极其构造算法;掌握图的两种存储结构极其构造算法;重点掌握图的两种遍历算法;重点掌握图的两种遍历算法;了解图的连通性问题极其判断;了解图的连通性问题极其判断;了解有向无环图极其应用(拓扑排序和关键路径)了解有向无环图极其应用(拓扑排序和关键路径)了解最短路径问题的解
2、决方法。了解最短路径问题的解决方法。6.1图图的定的定义义及其常用及其常用术语术语u6.1.1 图的定义图的定义在图中的数据元素通常称为顶点,图(在图中的数据元素通常称为顶点,图(在图中的数据元素通常称为顶点,图(在图中的数据元素通常称为顶点,图(GraphGraph)是由)是由)是由)是由顶点集合顶点集合顶点集合顶点集合(VertexVertex)及顶点之间的)及顶点之间的)及顶点之间的)及顶点之间的关系集合关系集合关系集合关系集合(EdgeEdge)组成的一种数据结构。记为组成的一种数据结构。记为组成的一种数据结构。记为组成的一种数据结构。记为G=G=(V V,E E)。)。)。)。无向图
3、无向图有向图有向图G1=(V1,E1)其中其中V1=A,B,C,D,EE1=(A,D),(B,C),(B,D),(B,E),(D,E)G2=(V2,E2)其中其中V2=A,B,C,DE2=,u6.1.2 图的常用术语及含义图的常用术语及含义1有向图和无向图有向图和无向图在图中,根据顶点之间的关系是否有在图中,根据顶点之间的关系是否有方向性方向性可将可将图分为有向图和无向图。对于图分为有向图和无向图。对于无向图无向图,顶点的关,顶点的关系为无向边,用圆括号表示系为无向边,用圆括号表示,如如(x,y)。对于对于有向图有向图来说,顶点间的关系称为有向边,用来说,顶点间的关系称为有向边,用尖括号表示尖
4、括号表示,如,如xy。没有方向性,(没有方向性,(x,y)和()和(y,x)是等价的,是同一条边。)是等价的,是同一条边。表示从顶点表示从顶点x 发向顶点发向顶点y 的边,的边,x 为始点,为始点,y 为终点。为终点。2完全图、稠密图、稀疏图、网完全图、稠密图、稀疏图、网无向图中边的取值范围:无向图中边的取值范围:0en(n-1)/2。(用(用 n 表示图中顶点数目,用表示图中顶点数目,用 e 表示边的数目。且表示边的数目。且不考虑顶点到其自身的边。)不考虑顶点到其自身的边。)完全图:完全图:完全图:完全图:有有 n(n-1)/2 条边的无向图(即:条边的无向图(即:每两个每两个顶点之间都存在
5、着一条边顶点之间都存在着一条边)称为称为完全图完全图完全图完全图。v2 v1 v3 v4 v5 有向图中弧的取值范围:有向图中弧的取值范围:0en(n-1)。(用(用 n 表示图中顶点数目,用表示图中顶点数目,用 e 表示弧的数目。表示弧的数目。且不考虑顶点到其自身的弧。)且不考虑顶点到其自身的弧。)有向完全图:有向完全图:有向完全图:有向完全图:有有 n(n-1)条弧的有向图条弧的有向图(即:每两个顶点之间都存在着方向相反的两条(即:每两个顶点之间都存在着方向相反的两条弧)称为弧)称为有向完全图有向完全图有向完全图有向完全图。v2 v1 v3 v4 稀疏图:稀疏图:稀疏图:稀疏图:含有很少条
6、边或弧的图。含有很少条边或弧的图。稠密图:稠密图:稠密图:稠密图:含有很多条边或弧的接近完全图的图。含有很多条边或弧的接近完全图的图。权:权:权:权:与图的与图的边边边边或或弧弧弧弧相关的数,权值可以是距离,时间,相关的数,权值可以是距离,时间,价格等。价格等。网:网:网:网:带权的图。带权的图。成都成都12000(流动人口)(流动人口)15000(流动人口(流动人口 成都成都2039(距离)(距离)北京北京 北京北京 3子图子图若有两个图若有两个图若有两个图若有两个图 GG1 1和和和和GG2 2,其中,其中,其中,其中GG1 1=(V=(V1 1,E E1 1),GG2 2=(V=(V2
7、2,E E2 2),且满足如下条件:,且满足如下条件:,且满足如下条件:,且满足如下条件:V V2 2 V V1 1,E,E2 2 E1 1即即即即V V2 2 为为为为V V1 1 的子集,的子集,的子集,的子集,E E2 2 为为为为E E1 1 的子集,则称图的子集,则称图的子集,则称图的子集,则称图 GG2 2为图为图为图为图GG1 1 的子图。的子图。的子图。的子图。(a)图)图G (b)图)图G的两个子图的两个子图4邻接点和度邻接点和度对于对于对于对于无向图无向图无向图无向图,假若顶点,假若顶点,假若顶点,假若顶点v v 和顶点和顶点和顶点和顶点w w 之间存在一条边,之间存在一条
8、边,之间存在一条边,之间存在一条边,则称顶点则称顶点则称顶点则称顶点v v 和和和和w w 互为邻接点互为邻接点互为邻接点互为邻接点。和顶点。和顶点。和顶点。和顶点v v 关联的边的数关联的边的数关联的边的数关联的边的数目定义为目定义为目定义为目定义为v v的度。记为的度。记为的度。记为的度。记为ID(V)ID(V)。ID(A)=2ID(B)=3ID(D)=?ID(E)=?对于对于对于对于有向图有向图有向图有向图,由于弧有方向性,则有,由于弧有方向性,则有,由于弧有方向性,则有,由于弧有方向性,则有入度入度入度入度和和和和出度出度出度出度之之之之分。顶点的出度是以顶点分。顶点的出度是以顶点分。
9、顶点的出度是以顶点分。顶点的出度是以顶点v v 为弧尾的弧的数目,记为为弧尾的弧的数目,记为为弧尾的弧的数目,记为为弧尾的弧的数目,记为OD(V)OD(V)。顶点的入度是以顶点。顶点的入度是以顶点。顶点的入度是以顶点。顶点的入度是以顶点v v为弧头的弧的数目,为弧头的弧的数目,为弧头的弧的数目,为弧头的弧的数目,记为记为记为记为ID(V)ID(V)。OD(B)=1,ID(B)=2TD(B)=OD(B)+ID(B)=3试试求求顶顶点点A的入的入度、出度和度。度、出度和度。5路径、简单路径、简单回路路径、简单路径、简单回路路径长度路径长度路径长度路径长度:图中两个顶点之间的路径为两个顶点之:图中两
10、个顶点之间的路径为两个顶点之:图中两个顶点之间的路径为两个顶点之:图中两个顶点之间的路径为两个顶点之间的顶点序列,路径上所含边的数目。间的顶点序列,路径上所含边的数目。间的顶点序列,路径上所含边的数目。间的顶点序列,路径上所含边的数目。简单路径简单路径简单路径简单路径:若序列中第一个顶点和最后一个顶点相:若序列中第一个顶点和最后一个顶点相:若序列中第一个顶点和最后一个顶点相:若序列中第一个顶点和最后一个顶点相同的路径称为回路或环,序列中顶点不重复出现的同的路径称为回路或环,序列中顶点不重复出现的同的路径称为回路或环,序列中顶点不重复出现的同的路径称为回路或环,序列中顶点不重复出现的路径。路径。
11、路径。路径。简单回路简单回路简单回路简单回路:若序列中除第一个顶点和最后一个顶点:若序列中除第一个顶点和最后一个顶点:若序列中除第一个顶点和最后一个顶点:若序列中除第一个顶点和最后一个顶点相同外,其余顶点不重复的回路。相同外,其余顶点不重复的回路。相同外,其余顶点不重复的回路。相同外,其余顶点不重复的回路。6连通图、连通分量、强连通图和强连通分量连通图、连通分量、强连通图和强连通分量连通:连通:连通:连通:从顶点从顶点 v 到到 v 有路径,则说有路径,则说 v 和和 v 是连通的是连通的。连通图:连通图:连通图:连通图:图中任意两个顶点都是连通的。图中任意两个顶点都是连通的。非连通图:非连通
12、图:非连通图:非连通图:图中并非任意两个顶点都是连通的。图中并非任意两个顶点都是连通的。连通分量:连通分量:连通分量:连通分量:无向图的极大连通子图。无向图的极大连通子图。(a)连通图连通图G1(b)非非 连通图连通图G2(c)G2两个连通分量两个连通分量强连通图:强连通图:强连通图:强连通图:有向图的任意两个顶点之间都存在一条有向图的任意两个顶点之间都存在一条有向路径。有向路径。强连通分量:强连通分量:强连通分量:强连通分量:有向图中极大的强连通子图有向图中极大的强连通子图 (a)强连通图强连通图G1(b)非非 强连通图强连通图G2(c)G2三个强连通分量三个强连通分量6.2 图的存储结构图
13、的存储结构u6.2.1邻接矩阵(邻接矩阵(Adjacency Matrix)用两个数组来表示图,一个用两个数组来表示图,一个用两个数组来表示图,一个用两个数组来表示图,一个一维数组一维数组一维数组一维数组,存储图中顶,存储图中顶,存储图中顶,存储图中顶点的信息,一个数点的信息,一个数点的信息,一个数点的信息,一个数二维数组二维数组二维数组二维数组,即矩阵,存储顶点之,即矩阵,存储顶点之,即矩阵,存储顶点之,即矩阵,存储顶点之间相邻的信息,也就是边(或弧)的信息。间相邻的信息,也就是边(或弧)的信息。间相邻的信息,也就是边(或弧)的信息。间相邻的信息,也就是边(或弧)的信息。设图设图设图设图G=
14、G=(V V,E E),有),有),有),有n n 个顶点,则其所对应的邻接个顶点,则其所对应的邻接个顶点,则其所对应的邻接个顶点,则其所对应的邻接矩阵矩阵矩阵矩阵A A 是按如下定义的一个是按如下定义的一个是按如下定义的一个是按如下定义的一个 二维数组:二维数组:二维数组:二维数组:A B C D E FA B C D E F无向图的邻接矩阵的特点?无向图的邻接矩阵的特点?无向图的邻接矩阵的特点?无向图的邻接矩阵的特点?主对角线为主对角线为主对角线为主对角线为 0 0 且一定是对称矩阵。且一定是对称矩阵。且一定是对称矩阵。且一定是对称矩阵。A B C D E FA B C D E F如何求顶
15、点如何求顶点i的度?的度?邻接矩阵的第邻接矩阵的第i行(或第行(或第i列)非零元素的个数。列)非零元素的个数。如何求顶点如何求顶点 i 的所有邻接点?的所有邻接点?将数组中第将数组中第 i 行元素扫描一遍,若行元素扫描一遍,若aij为为1,则顶,则顶点点 j 为顶点为顶点 i 的邻接点。的邻接点。有向图的邻接矩阵一定不对称吗?有向图的邻接矩阵一定不对称吗?不一定,例如有向完全图。不一定,例如有向完全图。如何求顶点如何求顶点 i 的出度、入度?的出度、入度?邻接矩阵的第邻接矩阵的第 i 行元素之和,第行元素之和,第i列元素之和。列元素之和。若若若若GG是网,则邻接矩阵可定义为:是网,则邻接矩阵可
16、定义为:是网,则邻接矩阵可定义为:是网,则邻接矩阵可定义为:无向网无向网A1有向网有向网A2用邻接矩阵方法存储图,很容易确定图中任意两用邻接矩阵方法存储图,很容易确定图中任意两个顶点之间是否有边相连(邻接),但要确定图个顶点之间是否有边相连(邻接),但要确定图中有多少条边,则必须按行、按列对每个元素进中有多少条边,则必须按行、按列对每个元素进行检测,所花费的时间代价很大,同时,邻接矩行检测,所花费的时间代价很大,同时,邻接矩阵存储空间为阵存储空间为 O(n2),所以适用于稠密图。,所以适用于稠密图。public class Graphprotected final int MAXSIZE=10
17、;protected final int MAX=999;protected T V;/顶点信息顶点信息protected int arcs;/邻接矩阵邻接矩阵protected int e;/边数边数protected int n;/顶点数顶点数public Graph()public void CreateAdj()public int LocateVex(T v)public void DisplayAdjMatrix()图的邻接矩阵数据类型描述:图的邻接矩阵数据类型描述:【算法算法6-1】在图在图G中查找顶点中查找顶点public int LocateVex(T v)int i;for
18、(i=0;in;i+)if(Vi=v)return i;return-1;【算法算法】分配顶点数组和邻接矩阵分配顶点数组和邻接矩阵public Graph()V=(T)new ObjectMAXSIZE;arcs=new intMAXSIZEMAXSIZE;【算法算法6-2】在屏幕上显示图在屏幕上显示图G的邻接矩阵表示的邻接矩阵表示public void DisplayAdjMatrix()int i,j;System.out.println(图的邻接矩阵表示:图的邻接矩阵表示:);for(i=0;in;i+)for(j=0;jn;j+)System.out.print(+arcsij);Sy
19、stem.out.println();u6.2.2邻接表邻接表(Adjacency List)无向图的邻接表具有如下性质:无向图的邻接表具有如下性质:(1)第第i 个链表中结点的数目为第个链表中结点的数目为第i个顶点的度。个顶点的度。(2)所有链表中结点的数目的一半为图中边的数目。所有链表中结点的数目的一半为图中边的数目。(3)占用的存储单元数目为占用的存储单元数目为n2e。(。(n为顶点数,为顶点数,e为为边数)边数)顶点顶点 vi 的的出度出度出度出度为第为第 i 个个 单链表中的结点个数。单链表中的结点个数。特点:特点:顶点顶点 vi 的的入度入度入度入度为整个为整个单单 链表中邻接点域
20、值是链表中邻接点域值是 i 的结点个数的结点个数。顶点顶点 vi 的的入度入度入度入度为第为第 i 个个 单链表中的结点个数。单链表中的结点个数。顶点顶点 vi 的的出度出度出度出度为整个为整个单单 链表中邻接点域值是链表中邻接点域值是 i 的结点个数的结点个数。(a)有向图)有向图 (b)邻接表)邻接表 (c)逆邻接表)逆邻接表邻接表邻接表逆邻接表逆邻接表V0V1V2V321 3 1v0v1v2v301230 3 0 2 v0v1v2v3012330 练习练习6.3图的遍历图的遍历从图的任意指定顶点出发,依照某种规则去访问图从图的任意指定顶点出发,依照某种规则去访问图中所有顶点,且每个顶点仅
21、被访问一次,这一过程中所有顶点,且每个顶点仅被访问一次,这一过程叫做叫做图的遍历图的遍历图的遍历图的遍历。深度深度深度深度 优先遍历法优先遍历法优先遍历法优先遍历法(Depth_First SearchDFS)和和 广度优先遍历法广度优先遍历法广度优先遍历法广度优先遍历法(Breadth_Frist SearchBFS)V1V2V4V5V3V7V6V8u6.3.1深度优先搜索深度优先搜索方法:方法:1、首先访问出发点、首先访问出发点V;2、然后依次从、然后依次从V 出发搜索出发搜索V的每个邻接点的每个邻接点W,若,若W未曾访问过,则以未曾访问过,则以W为新的出发点继续进行深度优为新的出发点继续
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 第六章教学课件 第六 教学 课件
限制150内