邻接矩阵(Adjacency Matrix)

定义

  邻接矩阵(Adjacency Matrix):是表示顶点之间相邻关系的矩阵。设G=(V,E)是一个图,其中V={v1,v2,…,vn}。G的邻接矩阵是一个具有下列性质的n阶方阵:

特点

  无向图的邻接矩阵一定是对称的,而有向图的邻接矩阵不一定对称。因此,用邻接矩阵来表示一个具有n个顶点的有向图时需要n2个单元来存储邻接矩阵;对有n个顶点的无向图则只存入上(下)三角阵,故只需n(n+1)/2个单元。
  无向图邻接矩阵的第i行(或第i列)非零元素的个数正好是第i个顶点的度。
  有向图邻接矩阵中第i行非零元素的个数为第i个顶点的出度,第i列非零元素的个数为第i个顶点的入度,第i个顶点的度为第i行与第i列非零元素个数之和。
  用邻接矩阵表示图,很容易确定图中任意两个顶点是否有边相连。

邻接矩阵的C语言描述

  用一个顺序表来存储顶点信息
  

图的邻接矩阵表示法

  1.图的邻接矩阵表示法
  在图的邻接矩阵表示法中:
  ① 用邻接矩阵表示顶点间的相邻关系
  ② 用一个顺序表来存储顶点信息
  2.图的邻接矩阵(Adacency Matrix)
  设G=(V,E)是具有n个顶点的图,则G的邻接矩阵是具有如下性质的n阶方阵:
  

  【例】下图中无向图G 5 和有向图G 6 的邻接矩阵分别为A l 和A 2 。
  

  3.网络的邻接矩阵
  若G是网络,则邻接矩阵可定义为:
  

  其中:
  w ij 表示边上的权值;
  ∞表示一个计算机允许的、大于所有边上权值的数。
  【例】下面带权图的两种邻接矩阵分别为A 3 和A 4 。
  

  4.图的邻接矩阵存储结构形式说明
  #define MaxVertexNum l00 //最大顶点数,应由用户定义
  typedef char VertexType; //顶点类型应由用户定义
  typedef int EdgeType; //边上的权值类型应由用户定义
  typedef struct{
  VextexType vexs[MaxVertexNum] //顶点表
  EdeType edges[MaxVertexNum][MaxVertexNum];
  //邻接矩阵,可看作边表
  int n,e; //图中当前的顶点数和边数
  }MGragh;
  注意:
  ① 在简单应用中,可直接用二维数组作为图的邻接矩阵(顶点表及顶点数等均可省略)。
  ② 当邻接矩阵中的元素仅表示相应的边是否存在时,EdgeTyPe可定义为值为0和1的枚举类型。
  ③ 无向图的邻接矩阵是对称矩阵,对规模特大的邻接矩阵可压缩存储。
  ④ 邻接矩阵表示法的空间复杂度S(n)=0(n 2 )。
  5.建立无向网络的算法。
  void CreateMGraph(MGraph *G)
  {//建立无向网的邻接矩阵表示
  int i,j,k,w;
  scanf("%d%d",&G->n,&G->e); //输入顶点数和边数
  for(i=0;in;i++) //读人顶点信息,建立顶点表
  G->vexs =getchar();
  for(i=0;in;i++)
  for(j=0;jn;j++)
  G->edges[j]=0; //邻接矩阵初始化
  for(k=0;ke;k++){//读入e条边,建立邻接矩阵
  scanf("%d%d%d",&i,&j,&w);//输入边(v i ,v j )上的权w
  G->edges[j]=w;
  G->edges[j]=w;
  }
  }//CreateMGraph
  该算法的执行时间是0(n+n 2 +e)。由于e
  根据图的定义可知,图的逻辑结构分为两部分:V和E的集合。因此,用一个一维数组存放图中所有顶点数据;用一个二维数组存放顶点间关系(边或弧)的数据,称这个二维数组为邻接矩阵。邻接矩阵又分为有向图邻接矩阵和无向图邻接矩阵。

  

邻接矩阵(adjacency matrix)的Matlab表达

  N = 4;
  dag = zeros(N,N);
  C = 1; S = 2; R = 3; W = 4;
  dag(C,[R S]) = 1;
  dag(R,W) = 1;
  dag(S,W)=1;
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值