- 1、本文档共58页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
图基本概念、存储、遍历课件
图的基本概念;
1、图的的定义
如果数据元素集合D中的各元素之间存在任意的前驱和后继关系R,则此数据结构G=(D,R)称为图。如果将数据元素抽象为结点,元素之间的先后关系用边表示,则图亦可以表示为G=(V,E),其中V是结点的有穷(非空)集合,E为边的集合。如果元素a是元素b的前驱,这种先后关系对应的边用(a,b)表示,即(a,b)∈E。图可以分为无向图和有向图两种形式。;2:图结构的基本概念
(1)图:一个图G由两个集合V和E组成,记为G=(V,E)。图的数据元素通常称为顶点(vertex),V是有限的非空顶点集,E是两个顶点之间的关系的有限集,分别记为V(G)、E(G)。
(2)有向图:任意x,y∈E(G),表示从顶点x到顶点y的一条弧(arc),且称x为弧尾(tail)或初始点,称y为弧头(head)或终端点。此时E(G)中的元素是有序的(即x,y≠ y, x ),称G为有向图(digraph)。
;;;;(8) 邻接点、度:对于无向图G=(V,E),如果边(v,v’)∈E(G),则称顶点v和v’互为邻接点(adjacent),即v和v’相邻接。边(v,v’)依附于顶点v和v’,或者说边(v,v’)和顶点v、v’相关联。对于无向图G=(V,E),v ∈V(G),顶点v的度(degree)是和v相关联的边的数目,记为TD(v)。对于有向图G=(V,E),如果弧v,v’∈E(G),则称顶点v邻接到v’,顶点v’邻接自顶点v,弧v,v’和顶点v、v’相关联。对于有向图G=(V,E),v ∈V(G),以顶点v为头的弧的数目称为v的入度(in-degree),记为ID(v);以v为尾的弧的数目称为v的出度(out-degree),记为OD(v);顶点v的度为TD(v)=ID(v)+OD(v)。
(9)图的顶点和边的性质2:一个有n个顶点v1,v2,…,vn,e条边或弧的图,满足如下关系:;(10)?? 路径、回路、环:无向图G=(V,E)中从顶点v到顶点v’的路径(path)是一个顶点序列(v=vi0,vi1,…,vin=v’),其中,(vi(j-1),vij)∈E(G),1≤j≤n。如果G是有向图,则路径也是有向的,顶点序列应满足vi(j-1),vij∈E(G),1≤j≤n。路径的长度是路径上边或弧的数目或它们的权之和。第1个顶点和最后1个顶点相同的路径称为回路???环(cycle)。序列中顶点不重复出现的路径称为简单路径。除了第1个顶点和最后1个顶点相同外,其余顶点不重复出现的回路,称为简单回路或简单环。
(11)?? 连通、连通图、连通分量:在无向图G中,如果从顶点v到顶点v’有路径,则称v和v’是连通的。如果图中任意两个顶点之间都存在路径,则称该无向图G为连通图。连通分量指的是图中的极大连通子图。在有向图G中,如果对于每一对顶点v、v’,从v到v’和从v’到v都存在路径,则称G是强连通图。有向图的极大强连通子图称为有向图的强连通分量。
;3、图的存储结构
图的邻接矩阵表示法
邻接矩阵是表示结点间相邻关系的矩阵。若G=(V,E)是一个具有n个结点的图,用邻接矩阵表示法来表示时,除了用邻接矩阵中的n*n个元素存储顶点间相邻关系外,往往还需要另设一个向量存储n个顶点的信息。因此其类型定义如下:; 若图中每个顶点只含一个编号i(1≤i≤vnum),则只需一个二维数组表示图的邻接矩阵。此时存储结构可简单说明如下: const? vnum=…;{图的顶点数} type? adj=0..1; adjmatrix=array[1..vnum,1..vnum]of adj;
end;
;上图中的图G1和图G2对应的相邻矩阵分别为: ;邻接表:邻接表是顺序结构和链式结构相结合的一种表示方法。在邻接表中,对图中的每一个顶点vi建立一个单链表li,vi作为单链表li的头结点,li中的每个结点表示与这个顶点vi相关联的顶点。若干个头结点用顺序结构存储,即构成了邻接表。
结点结构如下:
?;边结点中adjv表示与顶点vi相关联的顶点编号,nexte是一个指针,它指向下一个与vi相关联的顶点,edata表示这条边的有关数据信息,如权等。
头结点中 vdata表示顶点vi的顶点数据信息,如顶点名称等,firste表示与vi相连的第一条边。
在无向图的邻接表中,顶点vi的度恰为第I个链表中结点个数:而在有向图中,第I个链表中结点个数只是顶点vi的出度,为了求得入度,必须遍历整个链表。
;邻接表的描述如下:
TYPE link=^enode;
enode=RECORD
adjv:integer;
next:link;
edata:edatatype;
END;
vexnode=RECORD
vdata:vdatatype
文档评论(0)