一:图的定义
一个图G=(V,E)由定点集V和边集E组成,每一条边都是一个点对(v,w),当中v,w属于V。假设点对是有序的。那么图就叫做有向的。
有向的图有时也叫做有向图。
定点v,w邻接当且仅当(v,w)属于E。
有时候边还有第三种成分,称为权或值。
图的一条路径是一个顶点序列W1,W2。W3~Wn,使得(Wi,Wi+1)属于E,这样一条路径的长是该路径上的边数。它等于N-1.。从一个顶点到它自身能够看作是一条路径,假设路径不包括边,那么路径长为0。这是定义特殊情况的方便的方法。
假设图含有一条从一个顶点到它自身的边(v,w),那么路径v,w也叫做一个环。为们讨论的图通常是无环的。
一条简单路径是这种:其上全部顶点都是互异的,但第一个顶点和最后一个顶点可能同样。
假设一个无向图中从每个顶点到每个其它顶点都存在一条路径。则称其为连同的。具有这样性质的有向图称为是强连通的。
假设一个有向图不是强连通的,可是它的基础图,即弧上去掉方向所形成的图是连通的。那么该有向图称为是弱连通的。
全然图是其每一对顶点间都存在一条边的图。
二:图的表示
我们将考虑有向图(无向图能够类似表示)
表示图的一种简单的方法是使用二维数组,称为邻接矩阵表示法。对于每一条边(u,v),我们置A[u][v]=1,否则数组元素就置0。也就是假设边存在就是1。不存在就是0。假设有权
就将权赋给A[u][v]。而使用一个非常大或非常小的权做为标记来表示一条不存在的边。
邻接矩阵法非常easy,可是它的缺点也非常明显,假设一个图的边不多的话,它太浪费空间了,由于矩阵所须要的空间是N^2。假设图的边比較多,那这是比較合适的方法。
假设图是稀疏的。更好的办法是用邻接表来表示。对每个顶点。我们使用一个表存放全部邻接的顶点。
数组表示不方便的一般都用链表取代。
邻接表是表示图的标准方法。每条边出如今俩个表中,所以此空间的使用是双倍的。