图(Graph)是一种较树更为复杂的非线性数据结构。在树形结构中,数据元素之间的关系是层次型的,树中除叶子以外的每一个数据元素可以和它下一层的多个数据元素存在关系;但除根元素以外的每一个数据元素只能且必须和它上一层中的一个数据元素存在关系。而在图形结构中,数据元素之间的关系是任意的,图中每一个数据元素可以和任何其它数据元素相关联。
图的基本概念
图的术语
1.完全图(complete graph):在有n个顶点的无向图中,若有 n(n-1)/2条边,则称此无向图为完全无向图。在有n个顶点的有向图中,若有n(n-1)条边,则称此图为完全有向图。在完全图中边(弧)数目达到最大。
2.权(weight):在某些图的应用中,边(弧)上具有与它相关的系数,称之为权。这些权可以表示从一个顶点到另一个顶点的距离、花费的代价、所需的时间、次数等。这种带权图也被称为网络(network)。
3.邻接点(adjacent vertex):如果(v,w)是无向图G中的一条边,则称v与w互为邻接顶点,且边(v,w)称为依附于顶点v和w。如果<v、w>是有向图G 中的一条弧,则称顶点v邻接到顶点w(也称v是w的前驱),顶点w邻接自顶点v(也称w是v的后继),弧<v,w>与顶点v与w相关联。
4.子图(subgraph)
5.顶点的度(degree):在无向图中,一个顶点v的度是依附于顶点v的边的条数,记作TD(v)。在有向图中,以顶点v为始点的有向边的条数称为顶点v的出度,记作OD(v);以顶点v为终点的有向边的条数称为顶点v的入度,记作ID(v)。有向图中顶点v的度等于该顶点的入度与出度之和:TD(v)=ID(v)十OD(v)。
6.路径(path):在图G=(V,E)中,若从顶点vi出发,沿一些边(或弧)经过一些顶点vp1、vp2、…、vpk,到达顶点vj,则顶点序列(vi、vp1、vp2、…、 vpk、vj )被称为从顶点vi到顶点vj的路径。
7.路径长度(path length):对于不带权的图,路径长度是指此路径上边的数目。对于带权图,路径长度是指路径上各边的权之和。
8.简单路径与回路(cycle):对于一路径(v1、v2、…、vm),若路径上各顶点均不相同,则称这路径为简单路径。若路径上第一个顶点v1和最后一个顶点vm相同,则称这样的路径为回路或环。
9.连通图与连通分量:在无向图中,若从顶点vi到顶点vj有路径,则称顶点vi与vj是连通的。如果无向图中任意两个顶点都是连通的,则称此无向图是连通图。非连通图的极大连通子图(包括所有连通的顶点和这些顶点依附的所有的边)叫做连通分量。
如下图(a)所示是一个非连通图,图(b)所示是相应的三个连通分量。
10.强连通图与强连通分量(strongly connected digraph):在有向图中,若对于顶点vi和vj,存在一条从vi到vj和从vj到vi的路径,则称顶点vi和顶点vj是强连通。如果有向图中任意两个顶点都是强连通的,则称此有向图为强连通图。非强连通图的极大强连通子图叫做强连通分量。
11.生成树(spanning tree):一个连通图的生成树是它的极小连通子图,它包含图中全部n个顶点和仅使这n个顶点连通的n-1条边。如果一个有向图只有一个入度为零的顶点&#