元素之间存在多对多的关系(线性表的元素存在前驱和后继,树的元素之间存在父子关系,图任意元素之间都有可能存在关系)
是由顶点的有穷非空集合和顶点之间边的集合组成。
在图形数据结构中,数据被称为顶点,数据之间的关系被称为边
在图中不允许出现没有点,但可以没有边。
G(V,E) V表示顶点集合,E表示边的集合
各种图的定义:
无向图:顶点与顶点之间没有方向,这种边称为无向边,边用无向序偶对表示(v,v1). V={A,B,C,D} E={(A,B),(B,C,).(C,D),(D,A),(A,C)},在无向图中,如果任意两个顶点都存在边,这种图称为无向完全图。
有向图:若顶点之间有方向,这种边称为有向边,也叫弧,用有序偶对表示<v,v1>,v1叫弧头,v叫弧尾。
在有向图中任意两个顶点之间,都存在方向相反的两条弧,这种图叫有向完全图。
注意:如不存在顶点到自身的边,也不存在重复出现的边这种图叫简单图,数据结构中讨论的就是简单图。
稀疏图:图中有很少边或弧的叫稀疏图,反之叫稠密图
如果图中的边或弧有相关数据,数据称为权,这种图叫网(带权图)。
如果G(v,E)和G1(v1,E1),存在V>=V1且E>=E1,那么G1是G的子图。
顶点与边的关系:
顶点的度:指的是相关联的边或弧的数,有向图又分为出度(该顶点到其他顶点的弧的数目)和入度(其他顶点到该定点的数目)。
顶点序列:从一个顶点到另一个顶点的路径,路径长度指的是路径上的边或弧的数目。
联通图的相关术语:
在无向图中,在顶点v到v1之间有路径,则称v到v1之间是联通的,任意两个顶点都是连通的,成这种图为连通图。
无向图种的极大连通子图称为连通分量
1.必须是子图
2.子图必须是连通的
3.联通子图含有极大的顶点数。
有向图中,任意顶点之间都存在路径,这种图叫强连通图。极大连通子图叫强连通分量
在有向图中如果有一个顶的入度为0,其他顶点入度军为1,这是一颗有向树
图的存储结构
图的存储主要是两个方面:顶点,边
邻接矩阵:一个一维数组(顶点)和一个二维数组(边,弧)
优点:容易判定两点之间是否有边,容易计算出度和入度。容易统计阾接点
缺点:如果存储稀疏图,非常浪费存储空间。
阾接表:由顶点表,边表组成
顶点表:
顶点 阾接点地址/下标
优点:节省空间,容易计算出度。
缺点:不方便计算入度。