图的邻接矩阵存储

基本概念

要存储一个图,必须要存储其顶点数据和顶点关系。顶点数据可以用数组存储,下标为顶点编号。对于顶点关系,我们用**邻接矩阵(Adjacency Matrix)**进行存储。邻接矩阵简单来说就是检测从列到行的顶点是否有边。

的邻接矩阵是满足如下条件的 阶矩阵:

  • 或者 ,则
  • 否则,

无向图的邻接矩阵是对称的,有向图的邻接矩阵可能是不对称的。

基本操作

对于邻接矩阵,我们要判断两个顶点是否相邻,只需要判断对应数组的分量是否为 1。

在顶点不变的情况下,可以直接通过修改数组分量来添加或者删除边:

  • 在有向图中,统计第 的个数可得顶点 的出度,统计第 的个数可得顶点 的入度。
  • 在无向图中,统计第 行(列) 的个数可得顶点 的度。

带权图(网络)

对于带权的图(网络,Network),邻接矩阵中存放的便是边的权重,对于没有边的两顶点,根据权重所指存储 或者无穷()。

复杂度分析

邻接矩阵需要 的存储空间,其中 为顶点数。对于稀疏图来说,这会造成大量空间浪费。

链接到