数据结构——图的简单概念

巧了我就是萌 提交于 2019-12-18 16:36:19

图的简单概念

图的定义
图 G 由两个集合 V 和 VR 组成,记为:G=(V, VR)
结点关系任意
V 是顶点的有穷非空集合
VR 是 V 中顶点偶对的有穷集,顶点偶对称为边或弧。

简单图: 图中不存在顶点到其自身的边,且同一条边不重复出现。
无向图: 图中顶点 vi 和 vj 之间的边无方向,则称这条边为无向边,用无序偶对 (vi, vj) 表示
无向完全图: 在无向图中,如果任意两个顶点之间都存在边,则称为无向完全图。含有 n 个顶点的无向完全图有n*(n-1)/2条边。
有向图:图中顶点 vi 和 vj 之间的边有方向,则称这条边为有向边,用有序偶对 <vi, vj> 表示
有向完全图:在有向图中,若任意两顶点间都存在方向互为相反的两条弧,则称为有向完全图。含有 n 个顶点的有向完全图有 n(n-1)* 条边。

邻接:对图 G=(V, VR),如果边 (vi, vj)∈VR,则称顶点 vi 和 vj 互为邻接点;如果弧<vi, vj>∈VR,则称顶点 vi 邻接到 vj,vj 邻接自 vi。
依附:对图 G=(V, VR),如果边 (vi, vj)∈VR 或弧 <vi, vj>∈VR,则称边 (vi, vj) 或弧 <vi, vj> 依附于顶点 vi 和 vj。

稀疏图和稠密图
e 表示图中的边数,n 表示图中的顶点数
e<nlogn 稀疏图
e ≥ nlogn 稠密图

顶点的度D(v)
对于有向图,顶点 v 的入度是以 v 为终点的有向边的条数, 记作 ID(v) ,出度是以 v 为始点的有向边的条数, 记作OD(v)
对于有向图,顶点 v 的度 D(v)=ID(v)+OD(v);对于无向图,顶点 v 的度是依附于该顶点的边的个数,记为 D(v)。
e = 1/2 * Σ D(vi) 每条边必形成两个度。

路径和回路
路径:在图 G(V, VR) 中,从顶点 vi 到顶点 vj 的顶点序列。路径上的边的数目为路径长度。序列中顶点不重复出现的路径为简单路径
回路:在路径顶点序列中,第一和最后一个顶点相同的路径。除第一和最后一个顶点外,其余顶点不重复出现的回路为简单回路。

子图
对于图 G=(V, VR) 和 G’=(V’, VR’),如果 V’V 且 VR’VR,则称 G’ 为 G 的子图。

连通图和连通分量
连通图:在无向图 G 中,如果任意两个顶点 vi 和 vj之间都有路径,则称 图 G 是连通图。
连通分量:非连通图的极大连通子图。任何连通图都只有一个连通分量,即是其自身;非连通图有多个连通分量。
极大连通子图:该子图是 G 连通子图,将G 的任何不在该子图中的顶点加入,子图不再连通。
强连通图:在有向图 G 中,对任意两个顶点 vi 和 vj,如果从顶点 vi 到 vj 均存在路径,则称图 G 是强连通图

生成树
包含无向图G 所有顶点,n-1条边的极小连通子图 。
有 n-1 条边的图不一定是生成树!
极小连通子图:该子图是G 的连通子图,在该子图中删除任何一条边,子图不再连通。
生成森林:对非连通图,由各个连通分量的生成树的集合。
若一个图有 n 个顶点且有多于 n-1 条边则一定有环。若一个图有 n 个顶点且有小于 n-1 条边则是非连通图。

** 顶点位置和邻接点位置**
点的位置顶:将图中顶点按任意顺序排列起来,即用顶点的存储顺序表示该顶点在图中的位置。
邻接点的位置:对一个顶点的所有邻接点按任意顺序排列,在这个排队中自然形成了第一个或第 k 个邻接点。如果某个顶点的邻接点个数大于 k,则称第 k+1 个邻接点为第 k 个邻接点的下一个邻接点,而最后一个邻接点的下一个邻接点为 “空”。

抽象数据类型

ADT Graph {
    Data:
	具有相同类型的数据元素的集合,称为顶点集。
    Relation: 
	R={E}
		E={<v,w>|v,w∈V 且 P(v,w)<v,w> 表示从v到w的弧,	       						谓词P(v,w)定义了弧<v,w>的意义或信息}
    Operation:
	CreateGraph(&G,V,VR)
	    初始条件:V是图中顶点集合,VR是图中顶点偶对集合。
	    操作结果:按照V和VR的定义构造图G。
	……
	DFSTraverse(G,v)
	    初始条件:图G已经存在,v是G中某个顶点。
	    操作结果:从v起深度优先访问G。
	BFSTraverse(G,v)
	    初始条件:图G已经存在,v是G中某个顶点。
	    操作结果:从v起广度优先访问G。
} ADT Graph 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!