6.1 图的概念
- 有向图:若E是有向边也称弧的有限集合时,则图G称为有向图。弧是顶点的有序对,记为<v,w>。
- 无向图:若E是无向边简称边的有限集合时,则图G称为无向图。边是顶点的无序对,记为(v,w)。
- 简单图:如果一个图G满足:a.不存在重复边。b.不存在顶点到顶点自身的边。则该图为简单图。
- 完全图:对于无向完全图,E的取值为即图中任意两个顶点之间都存在边。对于有向完全图中,任意两个顶点之间都存在方向相反的两条弧。
- 连通分量:无向图中极大连通子图称为连通分量。
- 强连通、强连通分量:有向图中,v->w,w->v都是有路径的(有路径未必有弧),则称这两个顶点是强连通的。若图中任何一对顶点都是强连通的,则称此图为强联通图。有向图中的极大强连通分量称为有向图的强连通分量。
- 生成树:连通图的生成树是包含图中全部顶点的一个极小连通子图。若图中有n个顶点,则它的生成树含有n-1条边。
- 边的权值和网:在图中,每条边都可以标上具有某种含义的数值,该数值称为该边的权值。
- 简单路径:在路径序列中,顶点不重复出现的路径称为简单路径。
- 简单回路:除第一个顶点和最后一个顶点以外,其余顶点不重复出现的回路称为简单回路。若第一个顶点和最后一个顶点相同,则称为回路或是环。
6.2 图的存储及基本操作
6.2.1 邻接矩阵法
所谓邻接矩阵法,是指用一个一维数组存储图中顶点的信息,用一个二维数组存储图中边的信息(即各顶点的邻接关系),存储顶点之间邻接关系的二维数组称为邻接矩阵。
//图的邻接矩阵存储结构定义
#define Max 100
typedef char VertexType;
typedef int EdgeType;
typedef struct {
VertexTyp