图图的存储表示图的遍历无向图的连通分量和生成树最短路径.ppt

图图的存储表示图的遍历无向图的连通分量和生成树最短路径.ppt

图 图的存储表示 图的遍历 无向图的连通分量和生成树 最短路径 拓扑排序 一、图 图 应用最广泛的数据结构。 不同于树的另一种非线性结构 每个顶点可以与多个其他顶点相关联,各顶 点之间的关系是任意的。 简单图 没有自身环,两点间至多一条边 图的基本概念 G=V, E V={v1,v2,······,vn} 顶点集 E={ (vi, vj) | vi,vj∈V, vi≠vj} 边集 无向图 E={vi, vj|vi , vj∈V}有向边集 有向图 有向边 vi, vj , vi起点弧尾, vj终点弧头 TD(vi): 一个顶点的度,以vi为端点的边的数目。 OD(vi): 出度, 以vi为起点的边的数目。 ID(vi): 入度,以vi为终点的边的数目。 TD(vi)= OD(vi)+ ID(vi) OD=ID, TD=2|E|, |E| =1/2*TD TD OD ID 为整个图的总度,出度,入度数。 图的基本概念 路径 vi······vj, 以vi为起点vj为终点的顶点序列。 路径的长 路径上边的数目, 简单路径 顶点都不重复的路径, 回路 环 首尾相接的路径, 简单回路 除第一个和最后一个顶点以外都不重 复的路径, vivj连通 有路径 vi······vj, 连通图 任意两点都连通, 有向图 vivj强连通 vivj连通 vjvi也连通, 强连通图 任意两点都强连通。 强连通分量:彼此强连通的顶点的子集 完全图 任意两点间都有边相关联的图。 无向完全图 共有边 1/2(n*(n-1)) 条, 有向完全图 共有边 n(n-1) 条。 子图 G=(V, E), G’=(V’, E’) 如果 V’ V, E’ E , 就称 G’是G的子图。 有向树 有向图连通图恰有一个顶点的入度为0, 其余顶点的入度都是1。 有向图的生成森林: 有向图的一个子图,含有所有顶点,构成若干互不相交的有向树,叫做生成森林。 二、图的存储结构 1.邻接矩阵 用矩阵表示图的顶点之间的相邻关系。 A[i,j]=1 (vi,vj)∈E =0 o.w. 无向图的邻接矩阵是对称矩阵 TD(vi)=ΣA[i,j] i行数字的和等于vi的度 有向图的邻接矩阵 A[i,j]=1 vi,vj∈E =0 o.w. 网的邻接矩阵 A[i,j]=wi (vi,vj)∈E 权为wi =∞ o.w. #ifndef GRAPH_CLASS #define GRAPH_CLASS #include iostream.h #include fstream.h #include stack.h #include pqueue.h #include queue.h #include seqlist2.h const int MaxGraphSize = 25; template class T class VertexIterator; template class T class Graph { SeqListT vertexList; int edge [MaxGraphSize][MaxGraphSize]; int graphsize; int FindVertex(SeqListT L, const T vertex); int GetVertexPos(const T vertex); public: Graph(void); int GraphEmpty(void) const; int GraphFull(void) const; int NumberOfVertices(void) const; int GetWeight(const T vertex1, const T vertex2); SeqListT GetNeighbors(const T vertex); int G

文档评论(0)

1亿VIP精品文档

相关文档