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

来源:互联网 发布:跨平台app开发 知乎 编辑:程序博客网 时间:2024/05/21 11:31

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)类似于树的层序遍历,代码如下:
这里写图片描述

原创粉丝点击