华东理工大学数据结构第7章.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)
《华东理工大学数据结构第7章.ppt》由会员分享,可在线阅读,更多相关《华东理工大学数据结构第7章.ppt(55页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、图的基本概念图的基本概念 图的存储结构图的存储结构 图的遍历图的遍历 最小生成树最小生成树2002-11-121mmmm7.1图的基本概念图的基本概念图定义图定义图是由顶点集合图是由顶点集合(vertex)及顶点间的关及顶点间的关系系边(或者弧边(或者弧)集合组成的一种数据结构集合组成的一种数据结构:Graph(V,E)其中其中 V=x|x 某个数据对象某个数据对象是顶点的有穷是顶点的有穷非空集合;非空集合;E=或或(v,w)|v,w V 是顶点之间关系的有穷集合,谓词是顶点之间关系的有穷集合,谓词P(v,w)定义了定义了弧弧的意义或信息的意义或信息,谓词是用来刻划个体词的性谓词是用来刻划个体
2、词的性谓词是用来刻划个体词的性谓词是用来刻划个体词的性质或事物之间关系的词质或事物之间关系的词质或事物之间关系的词质或事物之间关系的词.2002-11-122mmmm 有向图与无向图有向图与无向图 若图若图G G中的每条边都是有方中的每条边都是有方向向的,则称的,则称G G为为有向图有向图。有向边也称为。有向边也称为弧弧。若图。若图G G中的每条边都是没有方向中的每条边都是没有方向(x,y)的,的,则称则称G G为为无向图无向图.(x,y)称为边。称为边。V1V1V3V3V4V4V5V5V2V2V4V4V3V3V2V2V1V1无向图无向图无向图无向图G1G1有向图有向图有向图有向图G2G2G2
3、=(V2,E2)G2=(V2,E2)V2=v1,v2,v3,v4V2=v1,v2,v3,v4E2=,E2=,G1=G1=(V V,E E)集合集合集合集合V Vv1,v2,v3,v4,v5v1,v2,v3,v4,v5 集合集合集合集合E E(v1,v2),(v1,v4),(v2,v3),(v3,v4),(v3,v5),(v2,v5)(v1,v2),(v1,v4),(v2,v3),(v3,v4),(v3,v5),(v2,v5)。2002-11-123mmmm权权权权 某些图的边具有与它相关的数某些图的边具有与它相关的数,称之为权称之为权。在实际应用中,权值可以有某种含义。比如,在实际应用中,权值
4、可以有某种含义。比如,在一个反映城市交通线路的图中,边上的权值在一个反映城市交通线路的图中,边上的权值可以表示该条线路的长度或者等级;对于一个可以表示该条线路的长度或者等级;对于一个电子线路图,边上的权值可以表示两个端点之电子线路图,边上的权值可以表示两个端点之间的电阻、电流或电压值;对于反映工程进度间的电阻、电流或电压值;对于反映工程进度的图而言,边上的权值可以表示从前一个工程的图而言,边上的权值可以表示从前一个工程到后一个工程所需要的时间等等。到后一个工程所需要的时间等等。带权图叫做网带权图叫做网。有向网、无向网。有向网、无向网。2002-11-124mmmm12356874ABDCE10
5、796671231516603045358040752002-11-125mmmm完全图完全图 对有对有n n个顶点的图,若为有向图个顶点的图,若为有向图且边数为且边数为n(n-1)n(n-1),则称其为则称其为有向完全图有向完全图。若为无向图且边数为若为无向图且边数为n(n-1)/2n(n-1)/2,则称其则称其为为无向完全图无向完全图;边或弧数;边或弧数 nlognnlogn为为稀疏稀疏图图,反之为,反之为稠密图稠密图 邻接顶点邻接顶点 在无向图中,若(在无向图中,若(v vi i,v vj j)是一是一条边,则称顶点条边,则称顶点v vi i和和v vj j互为互为邻接点邻接点,或称,或
6、称v vi i和和v vj j相邻接相邻接,并称边(,并称边(v vi i,v vj j)关联于顶关联于顶点点v vi i和和v vj j,或称或称(v vi i,v vj j)与顶点与顶点v vi i和和v vj j相相关联关联。在有向图中,若有。在有向图中,若有 ,称v vi i邻接到邻接到v vj j,弧弧 关联于顶点关联于顶点v vi i和和v vj j.2002-11-126mmmmn n顶点的度顶点的度顶点的度顶点的度 一个顶点一个顶点一个顶点一个顶点v v的度是与它相关联的边的条的度是与它相关联的边的条的度是与它相关联的边的条的度是与它相关联的边的条数。数。数。数。记作记作记作记
7、作TD(TD(v v)。顶点顶点顶点顶点 v v 的入度的入度的入度的入度 是以是以是以是以 v v 为终点的有向边的条数为终点的有向边的条数为终点的有向边的条数为终点的有向边的条数,记作记作记作记作 ID(ID(v v);顶点顶点顶点顶点 v v 的出度的出度的出度的出度是以是以是以是以 v v 为始点的有向边的条数为始点的有向边的条数为始点的有向边的条数为始点的有向边的条数,记作记作记作记作 OD(OD(v v)。n n子图子图子图子图 设有两个图设有两个图设有两个图设有两个图 GG(V V,E E)和和和和 GG(V V,E E)。若若若若 V V V V 且且且且 E E E E,则称
8、则称则称则称 图图图图GG是是是是 图图图图GG的子图的子图的子图的子图。52002-11-127mmmm 路径路径路径路径 在图在图 G G(V V,E E)中中,若存在一个顶点序列若存在一个顶点序列 v vp p1 1,v vp p2 2,v vpmpm,使得使得(v vi i,v vp p1 1)、(v vp p1 1,v vp p2 2)、.、(v vpmpm,v vj j)均属于均属于E E,则称顶点则称顶点v vi i到到v vj j存在一存在一 条路径。若一条路径上除了条路径。若一条路径上除了v vi i 和和v vj j 可以相同外,可以相同外,其余顶点均不相同,则称此路径为一
9、条其余顶点均不相同,则称此路径为一条简单路径简单路径 。起点和终点相同的路径称为。起点和终点相同的路径称为回路或环回路或环,其余顶点均其余顶点均不相同,称为不相同,称为简单回路简单回路62002-11-128mmmm图的连通图的连通 在在无向图无向图G G中,若两个顶点中,若两个顶点v vi i和和v vj j之间有之间有 路径存在,则称路径存在,则称v vi i 和和v vj j 是连通的。若是连通的。若G G中任意两中任意两 个顶点都是连通的,则称个顶点都是连通的,则称G G为为连通图连通图。非连通图的非连通图的极大连通子图叫做连通分量。极大连通子图叫做连通分量。BEADCFBAFEDC2
10、002-11-129mmmmn n强连通图与强连通分量强连通图与强连通分量强连通图与强连通分量强连通图与强连通分量在有向图中在有向图中,若对于每一若对于每一对顶点对顶点vi和和vj,都存在一条从都存在一条从vi到到vj和从和从vj到到vi的路径的路径,则称此图是则称此图是强连通图强连通图。非强连通图的极大强连通。非强连通图的极大强连通子图叫做子图叫做强连通分量强连通分量。V2V2V4V4V3V3V1V1V4V4V3V3V2V2V1V12002-11-1210mmmm 生成树生成树一个连通图的生成树是它的极小一个连通图的生成树是它的极小连通子图,含图中连通子图,含图中n个顶点,有个顶点,有n-1
11、条条边。边。V1V1V3V3V4V4V5V5V2V2V1V1V3V3V4V4V5V5V2V2含图中含图中含图中含图中n n个顶点,有个顶点,有个顶点,有个顶点,有n n-1-1条边的图一定生成树吗?条边的图一定生成树吗?条边的图一定生成树吗?条边的图一定生成树吗?2002-11-1211mmmm生成森林生成森林在非连通图中,由每个连通分量在非连通图中,由每个连通分量都可得到一个极小连通子图,即一棵生成都可得到一个极小连通子图,即一棵生成树。这些连通分量的生成树就组成了一个树。这些连通分量的生成树就组成了一个非连通图的生成森林非连通图的生成森林。BEADCFBAFEDC2002-11-1212m
12、mmm基本操作基本操作基本操作基本操作P P:结构的建立和销毁结构的建立和销毁结构的建立和销毁结构的建立和销毁:CreateGraphCreateGraph(&G,V,VR);/(&G,V,VR);/按按按按V V和和和和VRVR的定义的定义的定义的定义构造图构造图构造图构造图GG。DestroyGraphDestroyGraph(&G);/(&G);/销毁图销毁图销毁图销毁图GG。对顶点的访问操作对顶点的访问操作对顶点的访问操作对顶点的访问操作:LocateVexLocateVex(G,u);/(G,u);/若若若若GG中存在顶点中存在顶点中存在顶点中存在顶点u u,则返回则返回则返回则返回
13、该顶点在图中该顶点在图中该顶点在图中该顶点在图中位置位置位置位置;否则返回其它信息。;否则返回其它信息。;否则返回其它信息。;否则返回其它信息。GetVexGetVex(G,v);/(G,v);/返回返回返回返回v v的值。的值。的值。的值。PutVexPutVex(&G,v,value);/(&G,v,value);/对对对对v v赋值赋值赋值赋值valuevalue。2002-11-1213mmmm对邻接点的操作对邻接点的操作对邻接点的操作对邻接点的操作:FirstAdjVexFirstAdjVex(G,v);/(G,v);/返回返回返回返回v v的的的的第一个邻接点第一个邻接点第一个邻接
14、点第一个邻接点。若该顶点若该顶点若该顶点若该顶点/在在在在GG中没有邻接点,则返回中没有邻接点,则返回中没有邻接点,则返回中没有邻接点,则返回“空空空空”。NextAdjVexNextAdjVex(G,v,w);/(G,v,w);/返回返回返回返回v v的(相对于的(相对于的(相对于的(相对于w w的)的)的)的)下一个下一个下一个下一个 邻接点邻接点邻接点邻接点。若。若。若。若w w是是是是v v的最后一个邻接点,的最后一个邻接点,的最后一个邻接点,的最后一个邻接点,则返回则返回则返回则返回“空空空空”。插入或删除顶点插入或删除顶点插入或删除顶点插入或删除顶点 InsertVexInsert
15、Vex(&G,v);/(&G,v);/在图在图在图在图GG中增添新顶点中增添新顶点中增添新顶点中增添新顶点v v。DeleteVexDeleteVex(&G,v);/(&G,v);/删除删除删除删除GG中顶点中顶点中顶点中顶点v v及其相关的及其相关的及其相关的及其相关的弧。弧。弧。弧。2002-11-1214mmmm插入和删除弧插入和删除弧插入和删除弧插入和删除弧InsertArcInsertArc(&G,v,w);/(&G,v,w);/在在在在GG中增添弧中增添弧中增添弧中增添弧 v,w,若若若若GG是无向的,则还增添对称弧是无向的,则还增添对称弧是无向的,则还增添对称弧是无向的,则还增添
16、对称弧 w,v。DeleteArcDeleteArc(&G,v,w);/(&G,v,w);/在在在在GG中删除弧中删除弧中删除弧中删除弧 v,w,若若若若GG是无是无是无是无 向的,则还删除对称弧向的,则还删除对称弧向的,则还删除对称弧向的,则还删除对称弧 w,v。遍历遍历遍历遍历DFSTraverseDFSTraverse(G,v,Visit();/(G,v,Visit();/从顶点从顶点从顶点从顶点v v起起起起深度优深度优深度优深度优先先先先遍历图遍历图遍历图遍历图GG,并对每个顶点调用函数并对每个顶点调用函数并对每个顶点调用函数并对每个顶点调用函数VisitVisit一次且一次且一次且
17、一次且仅一次。仅一次。仅一次。仅一次。BFSTraverseBFSTraverse(G,v,Visit();/(G,v,Visit();/从顶点从顶点从顶点从顶点v v起起起起广度优广度优广度优广度优先先先先遍历图遍历图遍历图遍历图GG,并对每个顶点调用函数并对每个顶点调用函数并对每个顶点调用函数并对每个顶点调用函数VisitVisit一次且一次且一次且一次且仅一次。仅一次。仅一次。仅一次。2002-11-1215mmmm 二、图的存储结构二、图的存储结构在图的邻接矩阵表示中,有一个在图的邻接矩阵表示中,有一个记录各个记录各个顶点信息顶点信息的的顶点表顶点表,还有一个,还有一个表示各个顶表示各
18、个顶点之间关系点之间关系的的邻接矩阵邻接矩阵。设图设图A=(V,E)是一个有是一个有n 个顶点的图,则个顶点的图,则图的邻接矩阵是一个二维数组图的邻接矩阵是一个二维数组A.Edgenn,定义:定义:无向图的邻接矩阵是对称的,有向图的邻无向图的邻接矩阵是对称的,有向图的邻接矩阵可能是不对称的。接矩阵可能是不对称的。1.邻接矩阵邻接矩阵(AdjacencyMatrix)162002-11-1216mmmm在无向图中在无向图中在无向图中在无向图中,统计第统计第统计第统计第 i i 行行行行(列列列列)1)1的个数可得顶点的个数可得顶点的个数可得顶点的个数可得顶点i i 的度。的度。的度。的度。在有向
19、图中在有向图中在有向图中在有向图中,统计第统计第统计第统计第 i i 行行行行11的个数可得顶点的个数可得顶点的个数可得顶点的个数可得顶点 i i 的出度,的出度,的出度,的出度,统计第统计第统计第统计第 j j 列列列列11的个数可得顶点的个数可得顶点的个数可得顶点的个数可得顶点 j j 的入度。的入度。的入度。的入度。2002-11-1217mmmm网的邻接矩阵网的邻接矩阵2002-11-1218mmmm邻接矩阵表示法中图的描述邻接矩阵表示法中图的描述#definen6/*图的顶点数图的顶点数*/#definee8/*图的边数图的边数*/typedefcharvextype;/*顶点的数据
20、类型顶点的数据类型*/typedeffloatadjtype;/*权值类型权值类型*/typedefstructvextypevexsn;adjtypearcsnn;graph;2002-11-1219mmmm214352002-11-1220mmmmBADCE2002-11-1221mmmm2153462030504070802002-11-1222mmmm邻接矩阵表示法中无向网的建立算法邻接矩阵表示法中无向网的建立算法CREATEGRAPH(graph*ga)inti,j,k;floatw;for(i=0;ivexsigetchar();/*读入顶点信息,建立顶点表读入顶点信息,建立顶点表
21、*/for(i=0;in;i+)for(j=0;jarcsij0;/*邻接矩阵初始化邻接矩阵初始化*/for(k=0;karcsijw;ga-arcsjiw;2002-11-1223mmmm2.邻接表存储结构邻接表存储结构(AdjacencyList)无向图的邻接表无向图的邻接表无向图的邻接表无向图的邻接表 把同一个顶点发出的边链接在同一个边链表中,链表把同一个顶点发出的边链接在同一个边链表中,链表把同一个顶点发出的边链接在同一个边链表中,链表把同一个顶点发出的边链接在同一个边链表中,链表的每一个结点代表一条边,叫做边结点,结点中保存的每一个结点代表一条边,叫做边结点,结点中保存的每一个结点代
22、表一条边,叫做边结点,结点中保存的每一个结点代表一条边,叫做边结点,结点中保存有与该边相关联的另一顶点的顶点下标有与该边相关联的另一顶点的顶点下标有与该边相关联的另一顶点的顶点下标有与该边相关联的另一顶点的顶点下标 destdest 和指向同和指向同和指向同和指向同一链表中下一个边结点的指针一链表中下一个边结点的指针一链表中下一个边结点的指针一链表中下一个边结点的指针 linklink。2002-11-1224mmmm有向图的邻接表和逆邻接表有向图的邻接表和逆邻接表在有向图的邻接表中,第在有向图的邻接表中,第i个邻接表链接的边个邻接表链接的边都是都是顶点顶点i发出的边发出的边。也叫做。也叫做出
23、边表出边表。在有向图的逆邻接表中,第在有向图的逆邻接表中,第i个邻接表链接的个邻接表链接的边都是边都是进入顶点进入顶点i的边的边。也叫做。也叫做入边表入边表。2002-11-1225mmmm带权图的边结点中保存该边上的权值带权图的边结点中保存该边上的权值cost。顶点顶点i 的边链表的表头指针的边链表的表头指针adj 在顶点表的下标在顶点表的下标为为i 的顶点记录中,该记录还保存了该顶点的的顶点记录中,该记录还保存了该顶点的其它信息。其它信息。在邻接表的边链表中,在邻接表的边链表中,各个边结点的链入顺序各个边结点的链入顺序任意,视边结点输入次序而定。任意,视边结点输入次序而定。设图中有设图中有
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华东理工大学 数据结构
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内