图(graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为 G(V,E),其中G表示一个图,V是图G中顶点的集合,E是图G中边的集合。
定义中值得注意的几个点有:
- 图中数据元素我们称之为顶点(vertex),而再线性表中我们称之为元素,树中我们称之为结点。
- 图中不允许顶点集为空,但允许边集为空。
- 线性表中,相邻元素具有线性关系;树结构中,相邻两层的结点具有层次关系;图中,任意两个顶点之间可能都有关系,顶点之间的逻辑关系用边来表示。
本章介绍的图都是简单图,所谓简单图就是:不存在顶点到自身的边,且同一条边不重复出现。 如下两个图都不是简单图:
1.各种图的定义
1.1无向图和有向图
①有向边和无向边
- 无向边:若两个顶点vi和vj之间的边没有方向,则称为这条边为无向边,用无序偶对(vi,vj)表示。
- 有向边:若从顶点vi到vj的边有方向,称为有向边,也成为弧。用有序偶对<vi,vj>表示,vi称为弧尾,vj称为弧头。
如:下左图ab之间的边可以表示为(a,b),下有图ab之间的弧可以表示为<a,b>,a为弧尾,b为弧头。
有了有向边和无向边的定义,我们就可以很容易的定义有向图和无向图了。
②有向图和无向图
- 无向图:如果图中任意两个顶点之间都是无向边,则称该图为无向图。
- 有向图:如果图中任意两个顶点之间的边都是有向边,则称该图为有向图。
如:无向图的集合为(V1,{E1}),顶点集合V1={a,b,c};边集合E1={(a,b),(a,c)}。有向图的集合为(V2,{E2}),顶点集合v2={a,b,c};边集合E2={<a,b>,<a,c>}。
③无向完全图和有向完全图
-
无向完全图:如果无向图的任意两个顶点之间都存在边,则称该图为无向完全图。
-
有向完全图:如果任意两个顶点之间都存在方向相反的两条弧,则称该图为有向完全图。
1.2网
①权
有些图的边或弧具有与它相关的数字,这种与图的边或弧相关的数字叫做权。
权表示一个顶点到另一个顶点的距离或者耗费。
②网
带权的图称为网。
如:
假设有两个图G=(V,{E})和G’=(V’,{E’),如果V’∈V且E‘∈E,则称G’为G的子图。
如:G1、G2、G3都是G的子图
2.图的顶点与边的关系
2.1边和度的关系
①无向图的边和顶点的度
顶点的度:顶点v的度是和顶点v相关联的边的数目,记为TD。
如:对于上图G,顶点a、b、c的度都为2。各个顶点度的和为2+2+2=6。
各顶点度的和为图边数的2倍。
②有向图的边和顶点的度
以顶点v为弧头的弧的数目称为v的入读,记为ID(v)以v作为弧尾的弧的数目称为v的出度,记为OD(v)。v的度TD(v)= ID(v)+ OD(v)。
如:对下图顶点a,出度尾2,入读为0;顶点b出度为0,入读为1;顶点c出度为0,入读为1.入读和为2,出度和为2,变数为2.
各顶点的出度或入度的和等于边数。
2.2路径
路径的长度是路径上的边或弧的数目。
①无向图的路径
无向图G中从顶点v到顶点v’的路径是一个顶点序列。
如:下图列举了从顶点a到顶点c的三种不同路径
②有向图的路径
如:下图列举了从顶点b到d的两种路径。而顶点a到b之间就不存在路径。
③回路或环
关于回路或环的几个定义:
-
第一个顶点和最后一个顶点相同的路径称为回路或环。
-
序列中的顶点不重复出现的路径称为简单路径。
-
除了第一个顶点和最后一个顶点之外,其余顶点不重复出现的回路,称为简单回路或简单环。
如:
3.连通图的相关术语
①无向图的连通图
在无向图G中,如果从顶到v到v‘上有路径,则称v和v’是连通的。如果对于图中任意两个顶点vi、vj ∈ V,vi和vj都是连通的,则称G是连通图。
如:对于图G,显然a到b、c都是连通的,但是a到d就没有路径,因此不是连通图。
②无向图的连通分量
无向图的极大连通子图称为连通分量。它强调:
- 是连通的子图。
- 连通子图包含极大顶点数。
- 具有极大顶点数的连通子图包含依附于这些顶点的所有边。
如:图①和图②是G的两个连通分量。图③因为不满足极大顶点数;图④因为不满足包含依附顶点的所有边。
③有向图的强连通图
在有向图G中,如果对于每一对vi、vj∈V、vi≠vj,从vi到vj和从vj到vi都存在路径,则称G是强连通图。
如:对于图1,从a到d存在路径,但是从d到a不存在,所以不是强连通图。图二就是强连通图。
④有向图的强连通分量
有向图中的极大强连通子图称为有向图的强连通分量。
如:图②就是图①的强连通分量。
4.连通图生成树和有向图生成森林
①连通图生成树
连通图生成树是一个极小的连通子图,它含有图中全部的n个顶点,但只有足以构成一棵树的n-1条边。
下面包含一些生成树的性质:
-
如果一个图包含n个顶点,小于n-1条边,则一定是非连通图。
-
生成树不能包含环,如果一棵树包含n个顶点和不少于n-1个边,则一定会包含环。
-
等于n-1条边的树也可能会包含环,如果包含环,就一定是非连通图。
如:对于连通图G,去掉两个构成环的边后,如图①和图②就满足生成树。对于图③由于包含环,因此不是连通图,就不能构成生成树。
②有向图生成森林
有向树:如果一个有向图恰好有一个顶点的入度为0(根结点),其余顶点的入度均为1(非根节点的双亲只有一个),则是一个有向树。
有向图生成森林:一个有向图的生成森林由若干棵有向树组成,含有图中所有顶点,但只有足以构成若干棵互不相交的有向树的弧。