数据结构图总结.pptx
《数据结构图总结.pptx》由会员分享,可在线阅读,更多相关《数据结构图总结.pptx(116页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、图图的基本概念图的存储表示图的遍历与连通性 最小生成树最短路径 活动网络 第1页/共116页图的基本概念图的基本概念n n图定义图定义图定义图定义 图是由顶点集合图是由顶点集合图是由顶点集合图是由顶点集合(vertex)及顶点间的关系集合组成的一种数据结构及顶点间的关系集合组成的一种数据结构及顶点间的关系集合组成的一种数据结构及顶点间的关系集合组成的一种数据结构:GraphGraph(V V,E E)其中其中其中其中 V V=x x|x x 某个数据对象某个数据对象某个数据对象某个数据对象 是顶点的有穷非空集合;是顶点的有穷非空集合;是顶点的有穷非空集合;是顶点的有穷非空集合;E E=(=(x
2、 x,y y)|)|x x,y y V V 或或或或 E E=y|x x,y y V V&PathPath(x x,y y)是顶点之间关系的有穷集合,也叫做边是顶点之间关系的有穷集合,也叫做边是顶点之间关系的有穷集合,也叫做边是顶点之间关系的有穷集合,也叫做边(edge)edge)集合。集合。集合。集合。PathPath(x x,y y)表示从表示从表示从表示从 x x 到到到到 y y 的一的一的一的一条单向通路条单向通路条单向通路条单向通路,它是有方向的。它是有方向的。它是有方向的。它是有方向的。第2页/共116页图的基本概念图的基本概念n n有向图与无向图有向图与无向图有向图与无向图有向
3、图与无向图 在有向图中,顶点对在有向图中,顶点对在有向图中,顶点对在有向图中,顶点对 x,y 是有序的。在无向图中,顶点对是有序的。在无向图中,顶点对是有序的。在无向图中,顶点对是有序的。在无向图中,顶点对(x,y)x,y)是无序的。是无序的。是无序的。是无序的。n n完全图完全图完全图完全图 若有若有若有若有 n n 个顶点的无向图有个顶点的无向图有个顶点的无向图有个顶点的无向图有 n n(n n-1)/2-1)/2 条边条边条边条边,则此图为完全无向图。有则此图为完全无向图。有则此图为完全无向图。有则此图为完全无向图。有 n n 个顶点的有向图有个顶点的有向图有个顶点的有向图有个顶点的有向
4、图有n n(n-n-1)1)条边条边条边条边,则此图为完全有向图则此图为完全有向图则此图为完全有向图则此图为完全有向图00001111222265433 第3页/共116页图的基本概念图的基本概念图的基本概念图的基本概念n n邻接顶点邻接顶点邻接顶点邻接顶点 如果如果如果如果(u u,v v)是是是是 E E(G)(G)中的一条边,则称中的一条边,则称中的一条边,则称中的一条边,则称 u u 与与与与 v v 互为邻接顶点互为邻接顶点互为邻接顶点互为邻接顶点。n n子图子图子图子图 设有两个图设有两个图设有两个图设有两个图 GG(V V,E E)和和和和 GG(V V,E E)。若若若若 V
5、V V V 且且且且 E E E E,则则则则称称称称 图图图图G G 是是是是 图图图图G G 的子图。的子图。的子图。的子图。n n权权权权 某些图的边具有与它相关的数某些图的边具有与它相关的数某些图的边具有与它相关的数某些图的边具有与它相关的数,称之为权。这种带权图叫做网络。称之为权。这种带权图叫做网络。称之为权。这种带权图叫做网络。称之为权。这种带权图叫做网络。0123子图子图0130123023第4页/共116页图的基本概念图的基本概念图的基本概念图的基本概念n n顶点的度顶点的度顶点的度顶点的度 一个顶点一个顶点一个顶点一个顶点v v的度是与它相关联的边的条数。记作的度是与它相关联
6、的边的条数。记作的度是与它相关联的边的条数。记作的度是与它相关联的边的条数。记作TD(TD(v v)。在有向图中在有向图中在有向图中在有向图中,顶点顶点顶点顶点的度等于该顶点的入度与出度之和。的度等于该顶点的入度与出度之和。的度等于该顶点的入度与出度之和。的度等于该顶点的入度与出度之和。n n顶点顶点顶点顶点 v v 的入度是以的入度是以的入度是以的入度是以 v v 为终点的有向边的条数为终点的有向边的条数为终点的有向边的条数为终点的有向边的条数,记作记作记作记作 ID(ID(v v););顶点顶点顶点顶点 v v 的出度是以的出度是以的出度是以的出度是以 v v 为为为为始点的有向边的条数始
7、点的有向边的条数始点的有向边的条数始点的有向边的条数,记作记作记作记作 OD(OD(v v)。n n路径路径路径路径 在图在图在图在图 GG(V V,E E)中中中中,若从顶点若从顶点若从顶点若从顶点 v vi i 出发出发出发出发,沿一些边经过一些顶点沿一些边经过一些顶点沿一些边经过一些顶点沿一些边经过一些顶点 v vp p1 1,v vp p2 2,v vpmpm,到达顶点到达顶点到达顶点到达顶点v vj j。则称顶点序列则称顶点序列则称顶点序列则称顶点序列(v vi i v vp p1 1 v vp p2 2.v vpm pm v vj j)为从顶点为从顶点为从顶点为从顶点v vi i
8、到顶点到顶点到顶点到顶点 v vj j 的路径。它经过的边的路径。它经过的边的路径。它经过的边的路径。它经过的边(v vi i,v vp p1 1)、(v vp p1 1,v vp p2 2)、.、(v vpmpm,v vj j)应是属于应是属于应是属于应是属于E E的边。的边。的边。的边。第5页/共116页图的基本概念图的基本概念n n路径长度路径长度路径长度路径长度 非带权图的路径长度是指此路径上边的条数。带权图的路径长度是指路径非带权图的路径长度是指此路径上边的条数。带权图的路径长度是指路径非带权图的路径长度是指此路径上边的条数。带权图的路径长度是指路径非带权图的路径长度是指此路径上边的
9、条数。带权图的路径长度是指路径上各边的权之和。上各边的权之和。上各边的权之和。上各边的权之和。n n简单路径简单路径简单路径简单路径 若路径上各顶点若路径上各顶点若路径上各顶点若路径上各顶点 v v1 1,v v2 2,.,.,v vm m 均不均不均不均不 互相重复互相重复互相重复互相重复,则称这样的路径为简单则称这样的路径为简单则称这样的路径为简单则称这样的路径为简单路径。路径。路径。路径。n n回路回路回路回路 若路径上第一个顶点若路径上第一个顶点若路径上第一个顶点若路径上第一个顶点 v v1 1 与最后一个顶点与最后一个顶点与最后一个顶点与最后一个顶点v vm m 重合重合重合重合,则
10、称这样的路径为回路则称这样的路径为回路则称这样的路径为回路则称这样的路径为回路或环。或环。或环。或环。012301230123第6页/共116页图的基本概念图的基本概念n n连通图与连通分量连通图与连通分量 在无向图中在无向图中,若从顶点若从顶点v1到顶点到顶点v2有路径有路径,则称顶点则称顶点v1与与v2是连通的。是连通的。如果图中任意一对顶点都是连通的如果图中任意一对顶点都是连通的,则称此图则称此图是是连通图连通图。非连通图的极大连通子图叫做。非连通图的极大连通子图叫做连通连通分量分量。n n强连通图与强连通分量强连通图与强连通分量 在在有向图有向图中中,若对若对于每一对顶点于每一对顶点v
11、i和和vj,都存在一条从都存在一条从vi到到vj和从和从vj到到vi的路径的路径,则称此图是则称此图是强连通图强连通图。非强连通。非强连通图的极大强连通子图叫做图的极大强连通子图叫做强连通分量强连通分量。n n生成树生成树 一个连通图的生成树是其极小连通子一个连通图的生成树是其极小连通子图,在图,在n个顶点的情形下,有个顶点的情形下,有n-1条边。条边。第7页/共116页图的抽象数据类型图的抽象数据类型class Graph public:Graph();void InsertVertex(Type&vertex);void InsertEdge(int v1,int v2,int weigh
12、t);void RemoveVertex(int v);void RemoveEdge(int v1,int v2);int IsEmpty();Type GetWeight(int v1,int v2);int GetFirstNeighbor(int v);int GetNextNeighbor(int v1,int v2);第8页/共116页图的存储表示图的存储表示邻接矩阵邻接矩阵邻接矩阵邻接矩阵(Adjacency Matrix)Adjacency Matrix)n n在图的邻接矩阵表示中,有一个记录各个顶点信在图的邻接矩阵表示中,有一个记录各个顶点信在图的邻接矩阵表示中,有一个记录各
13、个顶点信在图的邻接矩阵表示中,有一个记录各个顶点信息的顶点表,还有一个表示各个顶点之间关系的息的顶点表,还有一个表示各个顶点之间关系的息的顶点表,还有一个表示各个顶点之间关系的息的顶点表,还有一个表示各个顶点之间关系的邻接矩阵。邻接矩阵。邻接矩阵。邻接矩阵。n n设图设图设图设图 A=(V,E)A=(V,E)是一个有是一个有是一个有是一个有 n n 个顶点的图个顶点的图个顶点的图个顶点的图,图的图的图的图的邻接矩阵是一个二维数组邻接矩阵是一个二维数组邻接矩阵是一个二维数组邻接矩阵是一个二维数组 A A.edgeedgen nn n,定义:定义:定义:定义:第9页/共116页 无向图的邻接矩阵是
14、对称的无向图的邻接矩阵是对称的;有向图的邻接矩阵可能是不对称的。有向图的邻接矩阵可能是不对称的。第10页/共116页n n在有向图中在有向图中在有向图中在有向图中,统计第统计第统计第统计第 i i 行行行行 1 1 的个数可得顶点的个数可得顶点的个数可得顶点的个数可得顶点 i i 的的的的出度出度出度出度,统计第,统计第,统计第,统计第 j j 列列列列 1 1 的的的的个数可得顶点个数可得顶点个数可得顶点个数可得顶点 j j 的的的的入度入度入度入度。n n在无向图中在无向图中在无向图中在无向图中,统计第统计第统计第统计第 i i 行行行行(列列列列)1)1 的个数可得顶点的个数可得顶点的个
15、数可得顶点的个数可得顶点i i 的的的的度度度度。第11页/共116页网络(带权图)的邻接矩阵网络(带权图)的邻接矩阵631295420318第12页/共116页邻接表邻接表(Adjacency List)n n无向图的邻接表无向图的邻接表同一个顶点发出的边链接在同一个边链表中,每一个链结点代表一条边同一个顶点发出的边链接在同一个边链表中,每一个链结点代表一条边同一个顶点发出的边链接在同一个边链表中,每一个链结点代表一条边同一个顶点发出的边链接在同一个边链表中,每一个链结点代表一条边(边结边结边结边结点点点点),),结点中有另一顶点的下标结点中有另一顶点的下标结点中有另一顶点的下标结点中有另一
16、顶点的下标 dest dest 和指针和指针和指针和指针 linklink。ABCDdata adjABCD0123dest linkdest link 130210 第13页/共116页有向图的邻接表和逆邻接表有向图的邻接表和逆邻接表ABCdata adjABC012dest linkdest link 邻接表邻接表(出边表出边表)data adjABC012dest link逆邻接表逆邻接表(入边表入边表)102 011 第14页/共116页网络网络(带权图带权图)的邻接表的邻接表BACD9528data adjABCD0123dest cost link 1 53 62 83 21 9(
17、出边表出边表)(顶点表顶点表)6第15页/共116页n n带权图的边结点中保存该边上的权值带权图的边结点中保存该边上的权值带权图的边结点中保存该边上的权值带权图的边结点中保存该边上的权值 costcost。n n顶点顶点顶点顶点 i i 的边链表的表头指针的边链表的表头指针的边链表的表头指针的边链表的表头指针 adjadj 在顶点表的下标在顶点表的下标在顶点表的下标在顶点表的下标为为为为 i i 的顶点记录中,该记录还保存了该顶点的的顶点记录中,该记录还保存了该顶点的的顶点记录中,该记录还保存了该顶点的的顶点记录中,该记录还保存了该顶点的datadata信息。信息。信息。信息。n n在邻接表的
18、边链表中,各个边结点的链入顺序任意,在邻接表的边链表中,各个边结点的链入顺序任意,在邻接表的边链表中,各个边结点的链入顺序任意,在邻接表的边链表中,各个边结点的链入顺序任意,视边结点输入次序而定。视边结点输入次序而定。视边结点输入次序而定。视边结点输入次序而定。n n设图中有设图中有设图中有设图中有 n n 个顶点,个顶点,个顶点,个顶点,e e 条边,则用邻接表表示无条边,则用邻接表表示无条边,则用邻接表表示无条边,则用邻接表表示无向图时,需要向图时,需要向图时,需要向图时,需要 n n 个顶点结点,个顶点结点,个顶点结点,个顶点结点,2 2e e 个边结点个边结点个边结点个边结点(同一同一
19、同一同一条边会出现两次条边会出现两次条边会出现两次条边会出现两次);用邻接表表示有向图时,若不用邻接表表示有向图时,若不用邻接表表示有向图时,若不用邻接表表示有向图时,若不考虑逆邻接表,只需考虑逆邻接表,只需考虑逆邻接表,只需考虑逆邻接表,只需 n n 个顶点结点,个顶点结点,个顶点结点,个顶点结点,e e 个边结点。个边结点。个边结点。个边结点。第16页/共116页邻接多重表邻接多重表(Adjacency Multilist)n n在邻接多重表中在邻接多重表中在邻接多重表中在邻接多重表中,每一条边只有一个边结点。为有关边的处理提供了方便。每一条边只有一个边结点。为有关边的处理提供了方便。每一
20、条边只有一个边结点。为有关边的处理提供了方便。每一条边只有一个边结点。为有关边的处理提供了方便。n n无向图的情形无向图的情形无向图的情形无向图的情形uu边结点的结构边结点的结构 mark vertex1 vertex2 path1 path2其中其中,mark 是记录是否处理过的标记是记录是否处理过的标记;vertex1和和vertex2是该边两顶点位置。是该边两顶点位置。path1域是链接指域是链接指针针,指向下一条依附顶点指向下一条依附顶点vertex1的边;的边;path2 是是指向下一条依附顶点指向下一条依附顶点vertex2的边链接指针。的边链接指针。第17页/共116页需要时还可
21、设置一个存放与该边相关的权值的域需要时还可设置一个存放与该边相关的权值的域需要时还可设置一个存放与该边相关的权值的域需要时还可设置一个存放与该边相关的权值的域 costcost。uu顶点结点的结构顶点结点的结构 存储顶点信息的结点表以顺序表方式组织存储顶点信息的结点表以顺序表方式组织,每一个顶点结点有两个数据成员:其中,每一个顶点结点有两个数据成员:其中,data 存放与该顶点相关的信息,存放与该顶点相关的信息,Firstout 是指示第一条依附该顶点的边的指针。在邻是指示第一条依附该顶点的边的指针。在邻接多重表中接多重表中,所有依附同一个顶点的边都所有依附同一个顶点的边都链接在同一个单链表中
22、。链接在同一个单链表中。data Firstout第18页/共116页从顶点从顶点从顶点从顶点 i i 出发出发出发出发,可以循链找到所有依附于该可以循链找到所有依附于该可以循链找到所有依附于该可以循链找到所有依附于该顶点的边,也可以找到它的所有邻接顶点。顶点的边,也可以找到它的所有邻接顶点。顶点的边,也可以找到它的所有邻接顶点。顶点的边,也可以找到它的所有邻接顶点。第19页/共116页有向图的情形有向图的情形n n在用邻接表表示有向图时在用邻接表表示有向图时在用邻接表表示有向图时在用邻接表表示有向图时,有时需要同时使用邻接表和逆邻接表。用有向图的邻接有时需要同时使用邻接表和逆邻接表。用有向图
23、的邻接有时需要同时使用邻接表和逆邻接表。用有向图的邻接有时需要同时使用邻接表和逆邻接表。用有向图的邻接多重表多重表多重表多重表(十字链表十字链表十字链表十字链表)可把两个表结合起来表示。可把两个表结合起来表示。可把两个表结合起来表示。可把两个表结合起来表示。uu边结点的结构边结点的结构其中,其中,mark是处理标记;是处理标记;vertex1和和vertex2指明该有向边始顶点和终顶点的指明该有向边始顶点和终顶点的位置。位置。mark vertex1 vertex2 path1 path2第20页/共116页path1path1是指向是指向是指向是指向始顶点与该边相同始顶点与该边相同始顶点与该
24、边相同始顶点与该边相同的下一条边的指针;的下一条边的指针;的下一条边的指针;的下一条边的指针;path2path2是指向是指向是指向是指向终顶点与该边相同终顶点与该边相同终顶点与该边相同终顶点与该边相同的下一条边的指针。的下一条边的指针。的下一条边的指针。的下一条边的指针。需要时还可有权值域需要时还可有权值域需要时还可有权值域需要时还可有权值域costcost。uu顶点结点的结构顶点结点的结构 每个顶点有一个结点,它相当于出边表和入边每个顶点有一个结点,它相当于出边表和入边表的表头结点:其中,数据成员表的表头结点:其中,数据成员data存放与该顶存放与该顶点相关的信息,指针点相关的信息,指针F
25、irstout 指示以该顶点为指示以该顶点为始顶点的出边表的第一条边,始顶点的出边表的第一条边,Firstin指示以该指示以该顶点为终顶点的入边表的第一条边。顶点为终顶点的入边表的第一条边。data Firstin Firstout第21页/共116页邻接多重表的结构邻接多重表的结构mark vtx1 vtx2 path1 path2 0 10 31 22 33 44 0e1e2e3e4e5e6data Fin FoutABCDE01234e1e2e3e4e5e6ABCDE第22页/共116页在有向图的十字链表中,从顶点结点的firstout指针域出发,沿边结点中的path1域的链一直走到底正
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 结构图 总结
限制150内