-
前言:
在前面学的线性表的概念中,每个元素只有一个直接前驱和一个直接后继。
在树性结构中,数据元素之间是层次关系,并且每一层上的元素都和下一层的多个元素相关,但只能和上一层的一个元素相关。
——————————这些只是一对一或一对多的关系,而如果要研究多对多的关系就非常复杂了
-
图的定义 :
图(Graph)是顶点有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中G表示一个图,V表示图中顶点的集合,E是图中边的集合。
数据结构 | 元素名称 | 没有元素时 | 数据之间的逻辑关系 |
图 | 顶点 | —— | 任意两个顶点都可以有边 |
线性表 | 元素 | 空表 | 相邻之间元素为线性关系 |
树 | 结点 | 空树 | 相邻两层节点为层次关系 |
图的边集可以为空 ,但顶点不能空,国内图的定义必须要有穷、非空,所以不能没有元素,但国外可以为空图。
无向图:若图中所有顶点Vi到Vj之间的边没有方向,则称这条边为无向图,任意两顶点之间的边用无序偶(Vi,Vj)来表示,无序偶就是 表示Vi和Vj之间只有一 条边,且没有方向,(Vi,Vj)== (Vj,Vi)。
上图G就是一个无向图,G={V,E}。其中V={A,B,C,D} , E={(A,B),(B,C),(C,D),(D,A),(A,C)}。
有向图: 若图中所有顶点Vi到Vj的边有方向,则称为有向图,任意两顶点Vi到Vj的边有方向,则称这条边为有向边,也称为弧,用有序偶 < Vi , Vj > 表示,表示有一条边从Vi指向Vj,< Vi , Vj > != < Vj , Vi > !!!
上图G是一个有向图G={V,E}。其中V={A,B,C,D} ,E={ <B,C> , <B,A> , <C,A> , <A,D> }。
无向完全图:在无向图中,如果任意两个顶点之间都存在边,则称该图为无向完权图,含有n个顶点的无向完全图有n*(n-1)/2条边。
有向完全图:在有向图中,如果任意两个顶点都存在方向互为相反的两条弧,则称该图为无向完全图,含有n*(n-1)条边。
稀疏图和稠密图:两个是模糊的概念,是相对而言的,通常认为边或弧小于n*logn(n是顶点的个数)的图称之为稀疏图,反之为稠密图。
带权图:有些图的边或弧带有与它相关的值,我们称之为权,带权图称之为网。
子图:设有两个图G1=(V1,E1) , G2=(V2,E2) ,如果V2∈V1,且E2∈E1,则称G2是G1的子图,下图中,后面的几个图都是前面的图的子图
-
图的顶点与边之间的关系
1、对于无向图G=(V,E),如果边(V1,V2)∈E,则称顶点V1,V2互为邻接点,既V1,V2相邻接,边(V1,V2)依 附于顶点 V1,V2,或者说边(V1,V2)与顶点V1,V2相关联。
2、顶点V的度,是和V相关联的边的数目,记为TD(V),如下图1,顶点A与B互为邻接点,边(A,B)依附于顶点A与B上,顶点A的度为3。
3、对于有向图G=(V,E),如果有<V1,V2>∈E,则称顶点V1邻接到顶点V2,顶点V2邻接自顶点V1。以顶点∨为头的弧的数目称为V的入度( InDgree),记为ID(V),以Ⅴ为尾的弧的数目称为V的出度( OutDegree),记为OD(V),因此顶点V的度为 TD(V)=ID(V)+OD(V),下图2顶点A的入度是2,出度是1,所以顶点A的度是3。
![](https://img-blog.csdnimg.cn/20181223210718165.png)
![](https://img-blog.csdnimg.cn/20181223210939884.png)
4、从一个顶点到另外一个顶点所要经过的边或弧称之为路径,路径的长度是路径上边或弧的长度,第一个顶点到最后一个顶点称之为路径或环。
5、序列中顶点不重复出现的路径称为简单路径,除了第一个顶点到最后一个顶点之外,其余顶点不重复出现的回路,称之为简单的回路或单环。
6、在无向图中,如果从顶点V1到顶点V2有路径,则称V1和V2是连通的,如果图中任意两个顶点都是连通的,则称该图为连通图。
7、无向图中的极大连通子图称为连通分量:
a 首先要是子图,并且子图是连通的,
b 连通子图含有极大顶点数,
c 具有极大顶点数的连通子图包含依附于这些顶点的所有边,
8、在有向图中,如果对于每一对Vi到Vj都有路径,则称该图为强连通图。
9、有向图中的极大强连通子图称为有向图的强连通分量。
10、连通图的生成树是一个极小的连通子图,它含有图中的全部的n个点,但只有足以构成一棵树的n-1条边。
11、有一个顶点的入度为0,其余顶点的入度均为1的有向图称为有向树,一个有向树的生成森林是由若干个有向树组成。
-
总结
在图结构中,节点之间的关系可以是任意的,图中任意两个元素都可以直接相关,由此,图的应用极其广泛,已渗入到物理、化学、电信工程、计算机科学、以及数学等其他分支中,在离散数学中,图论是专门研究图的性质的数学分支,而在数据结构中,则应用图论的知识讨论如何在计算机上实现图的操作,因此,主要学习图的储存结构,以及若干图的操作的实现。本文主要讨论了图的基本术语及概念,有关图的实现及其操作将会在下一篇文章中讨论。