图是一种较线性表和树更为复杂的数据结构,结点之间的关系可以是任意的,图中的任意两个数据元素之间都可能相关;
线性表中,数据元素之间仅有的线性关系,每个数据元素只有一个直接前驱和一个直接后继;
树形结构中,数据元素之间有着明显的层次关系;
一、图的定义
图是由顶点集V和边集E组成,记做G=(V,E)
- 其中V(G):顶点(数据结构)的
有限非空
集合; - E(G)表示:边的
有限
集合; - 若V={v1,v2,…vn},则用|V|表示图G中顶点的个数;
- E={(u,v),u∈V,v∈V},用|E|表示图G中边的条数;
注意:线性表可以是空表,树可以是空树,但图不可以是空图
图中不能一个顶点都没有,图的顶点集V一定是非空,但边集E可以为空. =>此时图中只有顶点而没有边
二、图的基本术语
2.1各种图的定义
区分:弧=边,路径
1到2有弧,2到3有弧;
1到3有路径,但是1到3没有弧
有向图:若E是有向边(称为弧
)的有限集合时,记为<v,w>
无向图:若E是无向边(简称边
)的有限集合时,记为(v,w)或(w,v)
完全图/简单完全图: 两个顶点之间都存在边
- 无向完全图:n(n-1)/2条边
- 有向完全图:n(n-1)条弧,在有向完全图中任意两个顶点之间都存在方向相反的两条弧
连通图:图G中任意两个顶点是连通的,反之为非连通图
2.2连通图的相关术语
无向图讨论连通性
有向图讨论强连通性
2.2.1连通性
连通图:图G中任意两个顶点是连通的,反之为非连通图
连通分量:无向图的极大连通子图
注意此概念要求:
- 要是子图
- 子图要是连通的
- 连通子图含有极大顶点数
- 具有极大顶点数的连通子图包含依附于这些顶点的所有边
图1是一个无向非连通图
图2图3是他的两个连通分量
图4不是图1的无向图的连通分量,因为他不满足连通子图的极大顶点数
2.2.2 强连通性质
强连通:有一对顶点v和w,从v到w和从w到v都有路径
强连通图:图中任意一对顶点都是强连通的
强连通分量:有向图的极大连通子图
图1不是强连通图,A->D存在路径,但是D->A不存在
图2是强连通图,且图2是图1的极大强连通子图=强连通分量
2.2.3 生成树
连通图的生成树是一个极小的连通子图,他包含图中全部的n个顶点,但只有足以构成一棵树的n-1条边
2.2.3 生成森林
:一个有向图由若干颗有向数构成
图1是一颗有向图,去掉一些弧后,它可以分解成两颗有向树,则这两颗树就是图1,有向图的生成森林