您的位置:首页 > 理论基础 > 数据结构算法

大话数据结构读书笔记(5)----图

2017-10-16 22:10 417 查看

1、图的定义

图(graph)是由顶点的有穷非空集合和顶点之间的边的集合组成,通常表示为:G(V,E),其中G表示一个图,V是图G中顶点的集合,E是图G中边的集合。

图按照有无方向分为无向图有向图。无向图由顶点和边构成,有向图由顶点和弧构成。弧有弧头和弧尾之分。

图按照边或弧的多少分稀疏图稠密图。如果任意两个顶点之间都存在边叫完全图,有向的叫有向完全图。若无重复的边或顶点到自身的边则叫简单图

无向图顶点的边数叫,有向图顶点分为入度出度

图上的边或弧带则称为

图中顶点之间存在路径,两顶点存在路径则说明是连通的,如果路径最终回到起始点则称为,当中不重复叫简单路径。若任意两顶点都是连通的,则图就是连通图,有向则称强连通图。图中有子图,若子图极大连通则就是连通分量,有向的则称强连通分量

2、图的存储结构

图的邻接矩阵(Adjacency Matrix)存储方式是用两个数组来表示图。一个一维数组存储图中顶点信息,一个二维数组(邻接矩阵)存储图中的边或弧的信息。

关于结点定义的代码:



无向图邻接表创建代码如下:





3、图的遍历

图的遍历(Traversing Graph):从图中某一顶点出发访遍图中其余顶点,且使每一个顶点仅被访问一次。

深度优先遍历(Depth_First_Search)从图的某个顶点V出发,访问此顶点,然后从V的未被访问的邻接点出发深度优先遍历图,直至图中所有和V有路径想通的顶点都被访问到。若图中尚有顶点未被访问,则另选中图中一个未被访问的顶点作为起始点,重复上述过程,直至图中所有顶点都被访问到为止。代码如下:



广度优先遍历(Breadth_First_Search)类似于树的层序遍历,代码如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息