一个aov网用邻接矩阵表示_图(邻接矩阵)

图的定义图表示的是一种多对多的关系,线性表和树也能看成是一种特殊的图图一定有一组非空的顶点,我们用V来表示顶点 (非空)图一定包含一组边, 我们用E来表示 (不是非空的)如果连接两个顶点的边是无向边 则用(V,W) 来表示 VW都是顶点如果连接两个顶点的边是有向边 则用<V,W>来表示 代表一条由V通向W的有向边图不存在重边和自回路 自回路(<V,V>)不存在图由一组非空的...
摘要由CSDN通过智能技术生成

图的定义

  1. 图表示的是一种多对多的关系,线性表和树也能看成是一种特殊的图
  2. 图一定有一组非空的顶点,我们用V来表示顶点 (非空)
  3. 图一定包含一组边, 我们用E来表示 (不是非空的)
  4. 如果连接两个顶点的边是无向边 则用(V,W) 来表示 VW都是顶点
  5. 如果连接两个顶点的边是有向边 则用<V,W>来表示 代表一条由V通向W的有向边
  6. 图不存在重边和自回路 自回路(<V,V>)不存在
  7. 图由一组非空的有限顶集和一组有限边集组成
  8. 权重: 一条边上的值 有的图上的边有权重 有的图上的边没有权重
  9. 图的四种情况: 无向无权重图 无向有权重图 有向无权重图 有向有权重图
  10. 如果图里的边有权重 可以叫这张图叫做网络
  11. 邻接点: 于a顶点有直接的边相连的点 叫做 a顶点的邻接点
  12. 图的度: 分为出度 和 入度 无向图的度 = 出度或者入度 出度和入度相同 /有向图的度 = 出度 + 入度
  13. 出度: 由a节点出发的边的数量 就是a节点的出度
  14. 入度: 指向a节点的边就是a节点的入度

邻接矩阵实现图:

邻接矩阵表示一张图:

创建一个二维数组: int G[N][N] 可以用来表示 从编号0 - (n-1)个顶点的图

数组里 G[0][1] 里存放的值为 无权图就是0/1 表示第0个节点和第一个几点是否有边相连

有权图里面可以存放边的权值

二维数组里的第i行 一整行存储的是第i个节点的入度 第i列 整列存储的是第i个节点的出度

邻接矩阵的特点

  1. 一张邻接矩阵的对角线 全部为0 也就是没有边 因为图没有自回路 所以G[1][1]是不会有边的
  2. 对于无向图来说沿着对角线折叠上半部分和下半部分是一样的 一条边会被存储两次浪费空间

好处和坏处

  1. 方便检查两个顶点之间是否有边
  2. 方便找到任一节点的所有邻接点
  3. 方便计算节点的出度和入度
  4. 但是对于稀疏图(有多个节点但是只有很少的边)来说浪费时间空间 里面存储了大量无意义的0
  5. 对稠密图还是很实惠的

结构和代码:

边的结构

public class Edge {
    
    public Integer fromvex,endvex; //用来表示有向边<fromvex,endvex> 存的是顶点下标
    public Integer Weight; //权重 无权重的话就是存储0/1
}

邻接矩阵的结构

public class Graph {
    
    public static int NotWeight = 5461;//有权图里没有权值的代表值
    public static int MaxVertexNum = 100;//最大顶点数
    public int numberV; //顶点的数量
    public int numberE; //边的数量
    public int[][] list = new int[MaxVertexNum][MaxVertexNum];
    public int type; //1无向无权重 2无向有权重 3有向无权重 4有向有权重
    public Integer[] data = new Integer[MaxVertexNum];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值