标签:
本文关于图的概述主要引自《新编数据结构习题与解析》(李春葆等著)第11章。
图G由两个集合V和E组成,记为G=(V, E),其中V是顶点的有限非空集合,E是V中顶点偶对的有限集,这些顶点偶对 称为边。
在图G中,如果代表边的顶点偶对是无序的,则称G为无向图。
在图G中,如果表示边的顶点偶对是有序的,则称G为有向图。一个图要么为无向图,要么为有向图,不存在部分为有向图或无向图的情况。
若图中的每两个顶点之间都存在着一条边,称该图为完全图。完全有向图有n(n-1)条边,完全无向图有n(n-1)/2条边。
在一个无向图中,若存在一条边(i, j),则称顶点i和顶点j为该边的两个端点,并称它们互为邻接点。
在一个有向图中,若存在一条边<i, j>,则称顶点i和j为该边的两个端点,也称它们互为邻接点,这里,顶点i为起点,顶点j为终点。
在无向图中,顶点所具有的边的数目称为该顶点的度。
在有向图中,顶点v的度又分为入度和出度,以顶点v为终点的入边的数目,称为该顶点的入度;以顶点v为起点的出边的数目,称为该顶点的出度。一个顶点的入度和出度的和称为该顶点的度。在一个具有e条边的图中有:度之和为2e。
设有两个图G=(V, E)和G‘=(V‘, E‘),若V‘是V的子集,且E‘是E的子集,则称G‘是G的子图。
在一个图G=(V, E)中,从顶点i到顶点j的一条路径是一个顶点序列(i, i1, i2, ..., im, j),若此图G是无向图,则边(i, i1), (i1, i2), ...(im, j) 属于E(G);若此图是有向图,则<i, i1>, <i1, i2>, ...<im, j> 属于E(G)。路径长度是指一条路径上经过的边的数目。若一条路径上除开始点和结束点可以相同外,其余顶点均不相同,则称此路径为简单路径。
任意两个顶点之间只有一条路径的无向连通图称为树图。n个顶点的树图恰好有n-1条边。
若一条路径上的开始点与结束点为同一个顶点,则此路径称为回路或环。开始点与结束点相同的简单路径被称为简单回路或简单环。
在无向图G中,若从顶点i到顶点j有路径,则称顶点i和顶点j是连通的。若图G中任意两个顶点都连通,则称G为连通图,否则称为非连通图。无向图G中的极大连通子图称为G的连通分量。显然,任何连通图的连通分量只有一个,即为自身,而非连通图可能有多个连通分量。
在有向图G中,若从顶点i到顶点j有路径,则称从顶点i到顶点j是连通的。若图G中的任意两个顶点i和顶点j都连通,即从顶点i到顶点j和从顶点j到顶点i都存在路径,则称图G是强连通图。有向图G中的极大强连通子图称为G的强连通分量。显然,强连通图只有一个强连通分量,即自身,非强连通图有多个强连通分量。
当一个图接近完全图时,则称为稠密图;相反,当一个图含有较少的边数(即当e<<n(n-1))时,则称为稀疏图。
图中每一条边都可以附有一个对应的数,这种与边相关的数称为权。权可以表示从一个顶点到另一个顶点的距离或花费的代价。边上带有权的图称为带权图,也称作网。
图有多种存储方式,其中最基本的两种存储方式为邻接矩阵和邻接表。
邻接矩阵是一种表示顶点之间邻接关系的矩阵。
设G=(V, E)是具有n个顶点的不带权无向图,则G的邻接矩阵是具有如下定义的n阶方阵A:
A[i][j] = 1 :表示有边(i, j)
A[i][j] = 0 :表示没有边(i, j) (0 <= i, j <= n-1)
A[i][i] = 0 :表示顶点i到自身没有边
设G=(V, E)是具有n个顶点的带权无向图,则G的邻接矩阵是具有如下定义的n阶方阵A:
A[i][j] = wij :表示有边(i, j),wij指边的权值
A[i][j] = ∞ :表示没有边(i, j) (0 <= i, j <= n-1)
A[i][i] = 0 :表示顶点i到自身没有边
设G=(V, E)是具有n个顶点的不带权有向图,则G的邻接矩阵是具有如下定义的n阶方阵A:
A[i][j] = 1 :表示有边<i, j>
A[i][j] = 0 :表示没有边<i, j> (0 <= i, j <= n-1)
A[i][i] = 0 :表示顶点i到自身没有边
设G=(V, E)是具有n个顶点的带权有向图,则G的邻接矩阵是具有如下定义的n阶方阵A:
A[i][j] = wij :表示有边<i, j>,wij指边的权值
A[i][j] = ∞ :表示没有边<i, j> (0 <= i, j <= n-1)
A[i][i] = 0 :表示顶点i到自身没有边
邻接矩阵是图的顺序存储结构,从邻接矩阵的行数或列数可知图的顶点数,无向图的邻接矩阵总是对称的,有向图的邻接矩阵不一样是对称的。
图的邻接矩阵存储结构的类型声明如下:
邻接表是图的一种链式存储结构,它用n个单链表替代邻接矩阵的n行,即对图中的每个顶点i建立一个单链表,把与顶点i邻接的顶点放在一个链表中。邻接表中的每个单链表的头节点存放有关顶点信息,称为表头节点,其余节点存放有关边的信息,称为边表节点。
邻接表的表头节点数为图中的顶点数。对于无向图的邻接表,边表节点数是图中边数的两倍;对于有向图的邻接表,边表节点数等于图中边数。
标签:
原文地址:http://www.cnblogs.com/xiehongfeng100/p/4446981.html