图的存储与实现,使用邻接矩阵

Posted Coderon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图的存储与实现,使用邻接矩阵相关的知识,希望对你有一定的参考价值。

一、实现思想

图的邻接矩阵表示法,也叫数组表示法。用一个一维数组存储图中的顶点,用一个二维数组存储图中的边,即各个顶点直接的边的关系,这个二维数组就叫「邻接矩阵」。

不用代码的话,我们都比较熟悉,图的深度遍历和广度遍历。但是用代码怎么实现,这就要考虑存储一个图了,这个正是本博客的重点。




设图G=(V,E),有n个顶点,则邻接矩阵是一个 n X n的二维数组。V代表一个点集,E代表一个边集。
  • 对于非网图(没有权值的有向、无向图)
                   = = 1 若(vi,vj) 属于 E
    edge[i][j]
                   = = 0 否则

这条公式很精辟,因为概括地很好,既包括了有向图,也包括了无向图。其实本质上,我们在置1的时候,考虑的是连通性,如果某个点可以到另一个点,那么二维数组的某个位置就可以置1了。



  • 对于网图(有权值的有向、无向图)

               = w(ij) 若(vi,vj)属于 E。w(ij)代表某条边的权值

edge[i][j] = 0 若 i = j

               = ∞ 否则



以上是关于图的存储与实现,使用邻接矩阵的主要内容,如果未能解决你的问题,请参考以下文章

编程实现以邻接表或邻接矩阵为存储结构,图的广度和深度优先搜索

图的理解:存储结构与邻接矩阵

数据结构图之存储结构

图的邻接矩阵存储

数据结构与算法学习笔记 图

数据结构与算法学习笔记 图