图的存储结构
由于图的任意两个顶点之间都可能存在联系,因此无法以数据元素在存储区中的物理位置来表示元素之间的关系,即图没有顺序存储结构,但我们可以用二维数组(矩阵)来表示元素之间的关系——邻接矩阵。除此之外还有链式存储结构,包括邻接表、十字链表和邻接多重表。其中邻接矩阵和邻接表最常用。
邻接矩阵
邻接矩阵(Adjacency Matrix)是表示顶点之间相邻关系的矩阵,存储在二维数组中。
1)在无向图中,若顶点v1与v2有联系,v1与v3没有联系,则在矩阵中,(1,2)和(2,1)的值为1,(1,3)和(3,1)的值为0,对称矩阵;
2)在无向网中,若边(v1,v2)的权为7,v1与y3没有联系,则在矩阵中,(1,2)和(2,1)的值为7,(1,3)和(3,1)的值为∞(无限);
3)在有向图中,若v1为弧尾,v2为弧头,v2不指向v1,则在矩阵中,(1,2)的值为1,(2,1)的值为0;
4)有向网的情况可以类推。
*需要注意的是,矩阵和二维数组的“坐标”含义是不同的,矩阵的(1,1)等价于二维数组中的[0,0]。
邻接矩阵仅记录着任意两点间的联系,我们还需要一个一维数组来记录每个顶点的信息,有边有顶点,这样才能构成一个完整的图。
清楚邻接矩阵的使用方法后,我们可以轻松写出以它为基础的图的结构形式。
为了避免概念的混淆,之后我会把图称作邻接矩阵图(AMGraph)。

本文介绍了图的存储结构,重点讲解了邻接矩阵的概念和应用场景。邻接矩阵是一个二维数组,用于表示图中顶点之间的相邻关系。在无向图和有向图中,邻接矩阵的表示方式有所不同,并且文中提到了邻接矩阵在判断两个顶点的联系、计算顶点度数方面的优势,以及其在增加删除顶点、统计边数和空间复杂度上的局限性。
最低0.47元/天 解锁文章
1536

被折叠的 条评论
为什么被折叠?



