第七章图.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第七章图.ppt》由会员分享,可在线阅读,更多相关《第七章图.ppt(96页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、图的基本概念图的基本概念图的存储表示图的存储表示图的遍历图的遍历图的连通性图的连通性 最小生成树最小生成树最短路径最短路径 活动网络活动网络第七章第七章 图图7.1 图的基本概念图的基本概念图定义图定义图定义图定义 图是由顶点集合图是由顶点集合图是由顶点集合图是由顶点集合(vertex)vertex)及顶点间的关系集合及顶点间的关系集合及顶点间的关系集合及顶点间的关系集合组成的一种数据结构组成的一种数据结构组成的一种数据结构组成的一种数据结构:GraphGraphGraphGraph(V V V V,E E E E)其中其中其中其中 V V V V=x x x x|x x x x 某个数据对象
2、某个数据对象某个数据对象某个数据对象 是顶点的有穷非空集合;是顶点的有穷非空集合;是顶点的有穷非空集合;是顶点的有穷非空集合;E E E E=(=(=(=(x x x x,y y y y)|)|)|)|x x x x,y y y y V V V V 或或或或 E E E E=yyy|x x x x,y y y y V V V V&PathPathPathPath(x x x x,y y y y)是顶点之间关系的有穷集合,也叫做边是顶点之间关系的有穷集合,也叫做边是顶点之间关系的有穷集合,也叫做边是顶点之间关系的有穷集合,也叫做边(edge)edge)edge)edge)集合。集合。集合。集合。
3、PathPathPathPath(x x x x,y y y y)表示从表示从表示从表示从 x x x x 到到到到 y y y y 的一条单向通路的一条单向通路的一条单向通路的一条单向通路,它是有它是有它是有它是有方向的。方向的。方向的。方向的。o o有向图与无向图有向图与无向图有向图与无向图有向图与无向图 在有向图中,顶点对在有向图中,顶点对在有向图中,顶点对在有向图中,顶点对 x,yx,yx,y是有序的。在无是有序的。在无是有序的。在无是有序的。在无向图中,顶点对向图中,顶点对向图中,顶点对向图中,顶点对(x,y)x,y)x,y)x,y)是无序的。是无序的。是无序的。是无序的。o o完全
4、图完全图完全图完全图 若有若有若有若有 n n n n 个顶点的无向图有个顶点的无向图有个顶点的无向图有个顶点的无向图有 n n n n(n n n n-1)/2-1)/2-1)/2-1)/2 条边条边条边条边,则此图则此图则此图则此图为完全无向图。有为完全无向图。有为完全无向图。有为完全无向图。有 n n n n 个顶点的有向图有个顶点的有向图有个顶点的有向图有个顶点的有向图有n n n n(n-n-n-n-1)1)1)1)条边条边条边条边,则此图则此图则此图则此图为完全有向图。为完全有向图。为完全有向图。为完全有向图。o o邻接顶点邻接顶点邻接顶点邻接顶点 如果如果如果如果(u u u u
5、,v v v v)是是是是 E E E E(G)(G)(G)(G)中的一条边,则称中的一条边,则称中的一条边,则称中的一条边,则称 u u u u 与与与与 v v v v 互为邻接顶点互为邻接顶点互为邻接顶点互为邻接顶点。l l权权 某某些些图图的的边边具具有有与与它它相相关关的的数数,称称之之为为权权。这种带权图叫做网络。这种带权图叫做网络。l l子子图图 设设有有两两个个图图 G G(V V,E E)和和 GG(V V,E E)。若若 V V V V 且且 E E E E,则则称称 图图G G 是是 图图G G 的子图。的子图。l l顶顶点点的的度度 一一个个顶顶点点v v的的度度是是与
6、与它它相相关关联联的的边边的的条条数数。记记作作TD(TD(v v)。在在有有向向图图中中,顶顶点点的的度度等等于于该顶点的入度与出度之和。该顶点的入度与出度之和。l l顶点顶点顶点顶点 v v v v 的入度的入度的入度的入度是以是以是以是以 v v v v 为终点的有向边的条数为终点的有向边的条数为终点的有向边的条数为终点的有向边的条数,记作记作记作记作 ID(ID(ID(ID(v v v v););););顶点顶点顶点顶点 v v v v 的出度是以的出度是以的出度是以的出度是以 v v v v 为始点的有向边的条数为始点的有向边的条数为始点的有向边的条数为始点的有向边的条数,记作记作记
7、作记作 OD(OD(OD(OD(v v v v)。l l路径路径路径路径 在图在图在图在图 G G G G(V V V V,E E E E)中中中中,若从顶点若从顶点若从顶点若从顶点 v v v vi i i i 出发出发出发出发,沿沿沿沿一些边经过一些顶点一些边经过一些顶点一些边经过一些顶点一些边经过一些顶点 v v v vp p p p1 1 1 1,v v v vp p p p2 2 2 2,v v v vpmpmpmpm,到达顶点到达顶点到达顶点到达顶点v v v vj j j j。则称顶点序列则称顶点序列则称顶点序列则称顶点序列(v v v vi i i i v v v vp p p
8、 p1 1 1 1 v v v vp p p p2 2 2 2.v v v vpm pm pm pm v v v vj j j j )为从顶点为从顶点为从顶点为从顶点v v v vi i i i 到顶点到顶点到顶点到顶点 v v v vj j j j 的路径。它经过的边的路径。它经过的边的路径。它经过的边的路径。它经过的边(v v v vi i i i,v v v vp p p p1 1 1 1)、(v v v vp p p p1 1 1 1,v v v vp p p p2 2 2 2)、.、(v v v vpmpmpmpm,v v v vj j j j)应是属于应是属于应是属于应是属于E E
9、 E E的边。的边。的边。的边。l l路径长度路径长度路径长度路径长度 非带权图的路径长度是指此路径上边的条数。非带权图的路径长度是指此路径上边的条数。非带权图的路径长度是指此路径上边的条数。非带权图的路径长度是指此路径上边的条数。带权图的路径长度是指路径上各边的权之和。带权图的路径长度是指路径上各边的权之和。带权图的路径长度是指路径上各边的权之和。带权图的路径长度是指路径上各边的权之和。l l简单路径简单路径简单路径简单路径 若路径上各顶点若路径上各顶点若路径上各顶点若路径上各顶点 v v v v1 1 1 1,v v v v2 2 2 2,.,.,.,.,v v v vm m m m 均不
10、互相均不互相均不互相均不互相重复重复重复重复,则称这样的路径为简单路径。则称这样的路径为简单路径。则称这样的路径为简单路径。则称这样的路径为简单路径。l l回路回路回路回路 若路径上第一个顶点若路径上第一个顶点若路径上第一个顶点若路径上第一个顶点 v v v v1 1 1 1 与最后一个顶点与最后一个顶点与最后一个顶点与最后一个顶点v v v vm m m m 重重重重合合合合,则称这样的路径为回路或环。则称这样的路径为回路或环。则称这样的路径为回路或环。则称这样的路径为回路或环。l l连通图与连通分量连通图与连通分量连通图与连通分量连通图与连通分量 在无向图中在无向图中在无向图中在无向图中,
11、若从顶点若从顶点若从顶点若从顶点v v v v1 1 1 1到顶点到顶点到顶点到顶点v v v v2 2 2 2有路径有路径有路径有路径,则称顶点则称顶点则称顶点则称顶点v v v v1 1 1 1与与与与v v v v2 2 2 2是连通的。如果图中任意一是连通的。如果图中任意一是连通的。如果图中任意一是连通的。如果图中任意一对顶点都是连通的对顶点都是连通的对顶点都是连通的对顶点都是连通的,则称此图是连通图。非连通图的则称此图是连通图。非连通图的则称此图是连通图。非连通图的则称此图是连通图。非连通图的极大连通子图叫做连通分量。极大连通子图叫做连通分量。极大连通子图叫做连通分量。极大连通子图叫
12、做连通分量。l l强连通图与强连通分量强连通图与强连通分量 在有向图中在有向图中,若若对于每一对顶点对于每一对顶点v vi i和和v vj j,都存在一条从都存在一条从v vi i到到v vj j和从和从v vj j到到v vi i的路径的路径,则称此图是强连通图。则称此图是强连通图。非强连通图的极大强连通子图叫做强连通分非强连通图的极大强连通子图叫做强连通分量。量。l l生成树生成树 一个连通图的生成树是它的极小一个连通图的生成树是它的极小连通子图,在连通子图,在n n个顶点的情形下,有个顶点的情形下,有n n-1-1条边。条边。但有向图则可能得到它的由若干有向树组成但有向图则可能得到它的由
13、若干有向树组成的生成森林。的生成森林。7.2 图的存储表示图的存储表示l l在图的邻接矩阵表示中,有一个记录各个顶点信息的在图的邻接矩阵表示中,有一个记录各个顶点信息的在图的邻接矩阵表示中,有一个记录各个顶点信息的在图的邻接矩阵表示中,有一个记录各个顶点信息的顶点表,还有一个表示各个顶点之间关系的邻接矩阵。顶点表,还有一个表示各个顶点之间关系的邻接矩阵。顶点表,还有一个表示各个顶点之间关系的邻接矩阵。顶点表,还有一个表示各个顶点之间关系的邻接矩阵。l l设图设图设图设图 A=(A=(A=(A=(V V V V,E E E E)是一个有是一个有是一个有是一个有 n n n n 个顶点的图,则图的
14、邻个顶点的图,则图的邻个顶点的图,则图的邻个顶点的图,则图的邻接矩阵是一个二维数组接矩阵是一个二维数组接矩阵是一个二维数组接矩阵是一个二维数组 A A A A.edge.edge.edge.edge n n n nn n n n ,定义:定义:定义:定义:邻接矩阵邻接矩阵(Adjacency Matrix)此时,邻接矩阵定义如下:此时,邻接矩阵定义如下:此时,邻接矩阵定义如下:此时,邻接矩阵定义如下:int adjmatrixint adjmatrixint adjmatrixint adjmatrixnn.nn.nn.nn.无向图的邻接矩阵是对称的,无向图的邻接矩阵是对称的,无向图的邻接矩阵
15、是对称的,无向图的邻接矩阵是对称的,有向图的邻接矩阵可能是不对称的有向图的邻接矩阵可能是不对称的有向图的邻接矩阵可能是不对称的有向图的邻接矩阵可能是不对称的l在有向图中在有向图中,统计第统计第 i i 行行 1 1 的个数可得顶点的个数可得顶点 i i 的的出度,统计第出度,统计第 j j 行行 1 1 的个数可得顶点的个数可得顶点 j j 的入度。的入度。l在无向图中在无向图中,统计第统计第 i i 行行(列列)1)1 的个数可得顶点的个数可得顶点i i 的度。的度。网络的邻接矩阵网络的邻接矩阵此时,邻接矩阵定义如下:此时,邻接矩阵定义如下:此时,邻接矩阵定义如下:此时,邻接矩阵定义如下:i
16、nt adjnetworkint adjnetworkint adjnetworkint adjnetworknn.nn.nn.nn.为了反映一个图的全面信息,可以采用以下结构:为了反映一个图的全面信息,可以采用以下结构:#define MAXVEX 100Struct vertexint num;/*顶点编号顶点编号*/char data;/*顶点的信息顶点的信息*/;typedef struct graphstruct vertex vexsMAXVEX;/*顶点集合顶点集合*/int edgesMAXVEXMAXVEX;/*边的集合边的集合*/adjmax;其中其中MAXVEX定义一个图
17、的最多顶点个数,定义一个图的最多顶点个数,vertex结构定结构定义一个顶的基本数据,义一个顶的基本数据,adjmax定义图的类型,包含该图的定义图的类型,包含该图的所有顶点和边。所有顶点和边。以下函数通过用户交互产生一个图以下函数通过用户交互产生一个图的邻接矩阵表示。的邻接矩阵表示。1、输入顶点数和边、输入顶点数和边数数.2、输入顶点信息、输入顶点信息.3、确定边的顶点和、确定边的顶点和权重值。权重值。C程序程序运行运行C程序程序abfcde1024251647583邻接表邻接表(Adjacency List)Adjacency List)l l无向图的邻接表无向图的邻接表无向图的邻接表无向
18、图的邻接表 把同一个顶点发出的边链接在同一个边链表中,链表把同一个顶点发出的边链接在同一个边链表中,链表把同一个顶点发出的边链接在同一个边链表中,链表把同一个顶点发出的边链接在同一个边链表中,链表的每一个结点代表一条边,叫做边结点,结点中保存的每一个结点代表一条边,叫做边结点,结点中保存的每一个结点代表一条边,叫做边结点,结点中保存的每一个结点代表一条边,叫做边结点,结点中保存有与该边相关联的另一顶点的顶点下标有与该边相关联的另一顶点的顶点下标有与该边相关联的另一顶点的顶点下标有与该边相关联的另一顶点的顶点下标 destdestdestdest 和指向和指向和指向和指向同一链表中下一个边结点的
19、指针同一链表中下一个边结点的指针同一链表中下一个边结点的指针同一链表中下一个边结点的指针 linklinklinklink。l l有向图的邻接表和逆邻接表有向图的邻接表和逆邻接表有向图的邻接表和逆邻接表有向图的邻接表和逆邻接表在有向图的邻接表中,第在有向图的邻接表中,第在有向图的邻接表中,第在有向图的邻接表中,第 i i i i 个边链表链接的边都是顶点个边链表链接的边都是顶点个边链表链接的边都是顶点个边链表链接的边都是顶点 i i i i 发发发发出的边。也叫做出的边。也叫做出的边。也叫做出的边。也叫做出边表出边表出边表出边表。在有向图的逆邻接表中,第在有向图的逆邻接表中,第在有向图的逆邻接
20、表中,第在有向图的逆邻接表中,第 i i i i 个边链表链接的边都是进入顶个边链表链接的边都是进入顶个边链表链接的边都是进入顶个边链表链接的边都是进入顶点点点点 i i i i 的边。也叫做的边。也叫做的边。也叫做的边。也叫做入边表入边表入边表入边表。l l带权图的边结点中保存该边上的权值带权图的边结点中保存该边上的权值 costcost。l l顶点顶点 i i 的边链表的表头指针的边链表的表头指针 adjadj 在顶点表的在顶点表的下标为下标为 i i 的顶点记录中,该记录还保存了该的顶点记录中,该记录还保存了该顶点的其它信息。顶点的其它信息。l l在邻接表的边链表中,各个边结点的链入顺序
21、在邻接表的边链表中,各个边结点的链入顺序任意,视边结点输入次序而定。任意,视边结点输入次序而定。l l设图中有设图中有 n n 个顶点,个顶点,e e 条边,则用邻接表表条边,则用邻接表表示无向图时,需要示无向图时,需要 n n 个顶点结点,个顶点结点,2 2e e 个边结个边结点;用邻接表表示有向图时,若不考虑逆邻接点;用邻接表表示有向图时,若不考虑逆邻接表,只需表,只需 n n 个顶点结点,个顶点结点,e e 个边结点。个边结点。网络网络(带权图带权图)的邻接表的邻接表注意:一个图的临界矩阵表示是唯一的,但其邻接表表示不唯注意:一个图的临界矩阵表示是唯一的,但其邻接表表示不唯一。这是因为邻
22、接表表示中,各边表结点的邻接次序取决于建一。这是因为邻接表表示中,各边表结点的邻接次序取决于建立邻接表的算法以及边的输入次序。也就是说,在邻接表的每立邻接表的算法以及边的输入次序。也就是说,在邻接表的每个线性链表中,各结点的顺序是任意的。个线性链表中,各结点的顺序是任意的。一个图的邻接表存储结构定义如下:一个图的邻接表存储结构定义如下:#include#define MAXVEX 30Struct edgenode int adjvex;/*邻接点序号邻接点序号 */char info;/*邻接点信息邻接点信息*/struct edgenode*next;Struct vexnode char
23、 data;/*结点信息结点信息*/struct edgenode *link;Typedef struct vexnode adjlistMAXVEX;以下函数通过用户交互产生一个图以下函数通过用户交互产生一个图的邻接表表示。的邻接表表示。1、输入顶点数和边数。、输入顶点数和边数。2、输入顶点信息。、输入顶点信息。3、确定边的起始顶点。、确定边的起始顶点。C程序程序运行运行C程序程序邻接多重表邻接多重表(Adjacency Multilist)l l在邻接多重表中,每一条边只有一个边结点。为有关在邻接多重表中,每一条边只有一个边结点。为有关在邻接多重表中,每一条边只有一个边结点。为有关在邻接
24、多重表中,每一条边只有一个边结点。为有关边的处理提供了方便。边的处理提供了方便。边的处理提供了方便。边的处理提供了方便。l l无向图的情形无向图的情形无向图的情形无向图的情形边结点的结构边结点的结构边结点的结构边结点的结构 mark vertex1 vertex2 path1 path2其中,其中,其中,其中,mark mark mark mark 是记录是否处理过的标记;是记录是否处理过的标记;是记录是否处理过的标记;是记录是否处理过的标记;vertexvertexvertexvertex1 1 1 1和和和和vertexvertexvertexvertex2 2 2 2是依附于该边的两顶点
25、位置。是依附于该边的两顶点位置。是依附于该边的两顶点位置。是依附于该边的两顶点位置。pathpathpathpath1 1 1 1域是链域是链域是链域是链接指针,指向下一条依附于顶点接指针,指向下一条依附于顶点接指针,指向下一条依附于顶点接指针,指向下一条依附于顶点vertexvertexvertexvertex1 1 1 1的边;的边;的边;的边;pathpathpathpath2 2 2 2也是链接指针,指向下一条依附于顶点也是链接指针,指向下一条依附于顶点也是链接指针,指向下一条依附于顶点也是链接指针,指向下一条依附于顶点vertexvertexvertexvertex2 2 2 2的边
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第七
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内