图的存储与基本操作 ----- 邻接矩阵法

1、

   》》 所谓邻接矩阵存储,就是用一个一维数组存储图中顶点的信息用一个二维数组

          存储图中边的信息(即各顶点之间的邻接关系),存储顶点之间邻接关系的二维

          数组称为邻接矩阵

   》》 结点数为 n 的图 G = (V , E)的邻接矩阵 A 是 n * n 的。将 G 的顶点编号为

          V1 , V2 , V3 , ... , Vn  。 若    , 则 A [ i ][  j ]  = 1 ,否则 A [ i ][  j ]  = 0 。

           

   》》 对于带权图而言,若顶点 Vi 和 Vj 之间有边相连,则邻接矩阵中对应项存放着该边

          对应的权值,若顶点 Vi 和 Vj 不相连,则用 ∞ 来代表两个顶点之间不存在的边。

              

  》》 有向图及其邻接矩阵

                 

  》》 无向图及其邻接矩阵

                    

  》》 网及其邻接矩阵

              

  》》图的邻接矩阵存储结构定义如下:

        

#define MaxVertexNum 100                      // 顶点数目的最大值
typedef char VertexType ;                     // 顶点的数据类型
typedef int EdgeType ;                        // 带权图中边上权值的数据类型
typedef struct{
    VertexType Vex[MaxVertexNum];             // 顶点表
    EdgeType Edge[MaxVertexNum][MaxVertexNum]; // 邻接矩阵,边表
    int vexnum , arcnum;                       // 图的当前顶点数和弧数
} MGragh ;

        注意:1)、在简单应用中,可直接用二维数组作为图的邻接矩阵(顶点信息等均可省略)。

                   2)、当邻接矩阵中的元素仅表示相应的边是否存在时, EdgeType 看定义为值 0 和 1 的枚举类型。

                   3)、无向图的邻接矩阵是对称矩阵,对规模特大的邻接矩阵可采用“ 压缩存储”

                   4)、邻接矩阵表示法的空间复杂度为 O()   ,其中 n 为图的顶点数 | V | 。

 

 2、图的邻接矩阵存储表示法具有以下特点:

        1)、无向图的邻接矩阵一定是一个对称矩阵(并且唯一)。因此,在实际存储邻接矩阵时只需要存储上

               (或下)三角矩阵的元素即可。

         2)、对于无向图,邻接矩阵的第 i 行(或者第 i 列)非零元素(或者非 ∞ 元素)的个数正好是第 i 个顶点

                 的度 TD(Vi)

         3)、对于有向图,邻接矩阵的第 i 行(或者第 i 列)非零元素(或者非 ∞ 元素)的个数正好是第 i 个顶点

                 的出度 OD(Vi) (或者入度 ID(Vi))。

          4)、用邻接矩阵存储图,很容易确定图中任意两个顶点之间是否有边相连。但是,要确定图中有多少条

                边,则必须按行、按列对每个元素进行检测,所花费的时间代价很大。这是用邻接矩阵存储图的局限性。

           5)、稠密图适合使用邻接矩阵的存储表示。

           6)、设图 G 的邻接矩阵为 A ,的元素 等于由顶点 i 到顶点 j 的长度为 n 的路径的数目。 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小达人Fighting

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值