- 1、本文档共40页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
前面已经介绍了两种基本的数据结构线性表和树
PAGE
PAGE 40
第7章 图
前面已经介绍了两种基本的数据结构:线性表和树。
线性表是一种线性结构,除了第一个元素(首元)和最后一个元素(尾元)外,每个数据元素都只有一个前趋元素和后继元素。
树是一种非线性结构,数据元素(结点)之间存在父子关系。除根结点外,每个结点有且仅有一个双亲结点(前趋),但却可以有零个或多个孩子结点(后继)。显然,树结构结点之间具有层次关系,一个结点可以和下一层的若干个结点相关,但只能和上一层的一个结点相关。
本章讨论的图结构是一种比树更为一般且更为复杂的非线性结构。在图结构中,数据元素(顶点)之间的关系是任意的,每个结点的前趋和后继不再加以限制,即每个顶点都可以和其它任何顶点相关。图结构也称为网状结构,而树结构可以看作是图的一种特殊形式。
本章先介绍图的概念,然后讨论图的各种存储表示以及图的几个典型应用问题。
7.1 图的基本概念
7.1.1 图的定义及运算
1)·图的定义
图(graph)是由两个集合V和E所限定的一种数据结构,记作
G=(V,E)
其中:V是构成图的顶点的非空有限集, E是表示顶点之间关系的边的集合。
在实际图的应用中,可能会同时接触若干个图,为了区别不同图的顶点集和边集,常常将图记作G=(V(G),E(V))。
2) 图的运算
对图可以进行下述各种 操作:
(1) CreateGraph(G,V,E): 根据顶点集V和边集E创建图G.
(2) DestroyGraph(G): 销毁图G.
(3) FirstAdjVex(G,v): 求图G中顶点v的第一个邻接顶点.
(4) NextAdjVex(G,v,w): 求图G中顶点v的相对于其邻接顶点w的下一个邻接顶点.
(5) InsertVex(G,v): 在图G中插入顶点v.
(6) DeleteVex(G,v): 在图G中删除顶点v及其与v相关的边.
(7) InsertArc(G,v,w): 在图G中插入边(v,w)或v,w.
(8) DeletArc(G,v,w): 在图G中删除边(v,w)或v,w.
(9) DFSTraverse(G,v): 从图G的v顶点出发,深度优先遍历图.
(10) BFSTraverse(G,v): 从图G的v顶点出发,广度优先遍历图.
7.1.2 图的基本术语
* 图结构中的数据元素为顶点(Vertex),在图的逻辑表示中,常常用一个小圆圈表示。往往在圆圈内标出顶点的值或者是人为给它指定的编号(该编号有时也称为顶点在图中的位置)以区别不同的顶点。在图的实际应用中,除在顶点内标注顶点值外,另外还标注上顶点的编号,称为双重标记法。
* 当两个顶点间存在关系时,用一条直线段(或曲线段)将这两个顶点连接起来,且称该线段为边(edge)。图中的边可以用顶点对表示。
* 如果顶点对是无序的,则称这样的边为无向边(edge);
* 如果顶点对是有序的,则称这样的边为有向边或弧(arc)。
例如,如果顶点i和顶点j之间存在一条无向边,则用(i,j)表示;而如果顶点i和顶点j之间有一条有向边,则用i,j表示,称i为有向边的弧尾(始点),j称为有向边的弧头(终点)。为了表示顶点对的有序性,往往用带箭头的线段表示,而无向边用不带箭头的线段表示。应该注意的是:(i,j)=(j,i),但i,j≠j,i。
* 由顶点集和无向边集构成的图称为无向图(undirected graph),
* 而由顶点集和有向边集构成的图称为有向图(directed graph)。
i
i
j
弧尾(始点) 弧头(终点)
附注:
G1
3
1
2
4
5
1
2
3
4
G3
G2
4
1
2
3
1
2
3
G4
图7.1 图的示例
E(G1)={(1,2),(1,3),(2,3),(3,4),(3,5),(4,5)}E(G2)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}E(G3)={1,3,2,1,2,4,3,2,4,1,4,3}E(G4)={1,2,2,1,2,3}
E(G1)={(1,2),(1,3),(2,3),(3,4),(3,5),(4,5)}
E(G2)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G3)={1,3,2,1,2,4,3,2,4,1,4,3}
E(G4)={1,2,2,1,2,3}
V(G1)={1,2,3,4,5},
V(G2)={1,2,3,4},
V(G3)={1,2,3,4},
V(G4)={1,2,3},
* 显然,n个顶点的无向图最多有n(n-1)/2条边,即任意两个顶点之间都有一条边。称具有n个顶点且有n(n-1)/2条边
文档评论(0)