图的定义
图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。
- 线性表中我们把数据元素叫做元素,树中叫结点,在图中数据元素我们称之为顶点(Vertex)。
- 线性表可以没有数据元素,称为空表,树中可以没有结点,叫做空树,而图结构在教材中强调顶点集合V要有穷非空。
- 线性表中,相邻的数据元素之间具有线性关系,树结构中,相邻两层的结点具有层次关系,而图结构中,任意两个顶点之间都可能有关系,顶点之间的逻辑关系用边来表示,边集可以是空的。
无向边:若顶点Vi到Vj之间的边没有方向,则称这条边为无向边(Edge),用无序偶<Vi,Vj>来表示。
上图是一个无向图,G={V1,E1},其中
V1={A,B,C,D}
E1={<A,B>,<B,C>,<C,D>,<D,A>,<A,C>}
有向边:若从顶点Vi到Vj的边有方向,则称这条边为有向边,也称为弧(Arc),用有序偶<Vi,Vj>来表示,Vi称为弧尾,Vj称为弧头。
上图是个无向图,G={V2,E2},其中
V2={A,B,C,D}
E2={<B,A>,<B,C>,<C,A>,<A,D>}
简单图:在图结构中,若不存在顶点到其自身的边,且同一条边不重复出现,则称这样的图为简单图。
无向完全图:在无向图中,如果任意两个顶点之间都存在边,则称该图为无向完全图。还有n个顶点的无向完全图有n*(n-1)/2条边。
有向完全图:在有向图中,如果任意两个顶点之间都存在方向互为相反的两条弧,则称该图为有向完全图。含有n个顶点的有向完全图有n*(n-1)条边。
稀疏图和稠密图:这里的稀疏和稠密是模糊的概念,都是相对而言的,通常认为边或弧数小于n*logn(n是顶点的个数)的图称为稀疏图,反之称为稠密图。
有些图的边或弧带有与它相关的数字,这种与图的边或弧相关的数叫做权(Weight),带权的图通常称为网(Network)。
顶点V的度(Degree)是和V相关联的边的数目,记为TD(V),如下图,顶点A与B互为邻接点,边(A,B)依附于顶点A与B上,顶点的度为3。
下图顶点A的入度是2,出度是1,所以顶点A的度是3。
- 路径的长度是路径上的边或弧的数目。
- 第一个顶点到最后一个顶点相同的路径称为回路或环( Cycle )。
- 序列中项点不重复出现的路径称为简单路径,除了第一个顶点和最后一个顶点之外,其余顶点不重复出现的回路,称为简单回路或简单环。
连通图
在无向图G中,如果从顶点V1到V2有路径,则称V1和V2是连通的,如果对于图中任意两个顶点Vi和Vj都是连通的,则称G是连通图(ConnectedGraph)
无向图中的极大连通子图称为连通分量。
- 首先是子图,并且子图要连通。
- 连通子图含有极大顶点数。
- 具有极大顶点数的连通子图包含依附于这些顶点的所有边。
在有向图G中,如果对于每一对Vi到Vj都存在路径,则称G是强连通图。
有向图中的极大强连通子图称为有向图的强连通分量。
所谓的一个连通图生成树是一个极小的连通子图,它含有图中全部的n个顶点,但只有足以构成一棵树的n-1条边。
如果一个有向图恰有一个顶点入度为0,其余顶点的入度均为1,则是一棵有向树。