跳至主要內容

05.图

约 410 字大约 1 分钟

图(Graph)是一种复杂的非线性表结构。

顶点(vertex):图中的元素;
边(edge):图中的顶点与其他任意顶点建立连接的关系;
顶点的度(degree):跟顶点相连接的边的条数。
入度(In-degree)和出度(Out-degree):对于有向图,一个顶点的入度是指以其为终点的边数;出度指以该顶点为起点的边数;
图有多种类型,包括有向图、无向图、简单图、多重图、有向图、无向图等;

图的分类

graphs.png

图的存储

邻接矩阵表示法

是图的常用存储表示,它的底层依赖一个二维数组。它用两个数组分别存储数据元素(顶点)的信息和数据元素之间的关系(边或弧)的信息 graph.png

无向图

我们可以设置两个数组,顶点数组为vertex[4]={v0,v1,v2,v3},边数组arc[4][4]为上图右边这样的一个矩阵。
对于矩阵的主对角线的值,即arc[0][0]、arc[1][1]、arc[2][2]、arc[3][3],全为0是因为不存在顶点的边。 250124356471485.png

有向图:

顶点数组为vertex[4]={v0,v1,v2,v3},弧数组arc[4][4]为下图右边这样的一个矩阵。主对角线上数值依然为0。
但因为是有向图,所以此矩阵并不对称,比如由v1到v0有弧,得到arc[1][0]=1,而v到v没有弧,因此arc[0][1]=0。 250127431007918.png

邻接表表示法

图的遍历

最短路径

最长路径