当前位置: 首页 > news >正文

图的存储:邻接矩阵法

1.邻接矩阵的实现

邻接矩阵的定义:在无向图和有向图中,使用二维数组表示各个顶点的相邻情况:1代表相邻,0表示不相邻。
代码实现:

#define MaxVertexNum 100//顶点数目的最大值
typedef struct {char Vex [MaxVertexNum];//顶点表int Edge [MaxVertexNum] [MaxVertexNum] ;//邻接矩阵,边表int vexnum, arcnum;//图的当前顶点数和边数/弧数
}MGraph;;

注意:

  • 顶点中可以存更复杂的信息
  • 边可以用bool型或枚举型变量

2.求顶点的度,入度,出度

1.无向图

  • 第i个结点的度=第i行(或第i列)的非零元素个数。(时间复杂度为O(N))

2.有向图

  • 第i个结点的出度=第i行的非零元素个数。
  • 第i个结点的入度=第i列的非零元素个数。
  • 第i个结点的度=第i行、第i列的非零元素个数之和。

3.邻接矩阵法存储带权图(网)

分为有向网和无向网。
同样使用二维矩阵存储,无穷代表没有路径可达,反之值代表路径的长度。
代码实现:

#define MaxVertexNum 100//顶点数目的最大值
#define INFINITY  1000000//最大的int值  宏定义常量"无穷"
typedef char VertexType; //顶点的数据类型
typedef int EdgeType; // 带权图中边上权值的数据类型
typedef struct {VertexType Vex [MaxVertexNum];//顶点EdgeType Edge[MaxVertexNum][MaxVertexNum]; //边的权int vexnum, arcnum;//图的当前顶点数和弧数
}MGraph;;

4.临接矩阵的性能分析

1.空间复杂度

O(n2):只和顶点数相关,和实际的边数无关。

  • 适合用于存储稠密图
  • 无向图的邻接矩阵是对称矩阵,可以压缩存储(只存储上三角区/下三角区)

5.邻接矩阵法的性质

设图G的邻接矩阵为A(矩阵元素为0/1),
则A"的元素A[i][]等于由顶点i到顶点j的长度为n的路径的数目。

http://www.lryc.cn/news/142258.html

相关文章:

  • 如何优雅的使用Git?
  • 【【STM32分析IO该设置什么模式的问题】】
  • 飞天使-k8s基础组件分析-服务与ingress
  • Unity——拖尾特效
  • java开发之fastjson
  • 第一个C语言程序:HelloWorld
  • golang 使用 viper 加载配置文件 自动反序列化到结构
  • C#设计模式六大原则之--接口隔离原则
  • 【面试题】:axios二次封装都进行了哪些配置以及如果项目里面有两个baseURL你怎么解决?
  • 谈谈对 GMP 的简单认识
  • Java正则表达式系列--从字符串中提取字符串或数字
  • 机器学习实战之模型的解释性:Scikit-Learn的SHAP和LIME库
  • Go 语言进阶与依赖管理 | 青训营
  • hyperf 十三 视图
  • 请你说说前端图形图像的框架
  • C++数据结构学习——栈
  • 【C++笔记】C++之类与对象(下)
  • 管理类联考——英语——实战篇——大作文——图表——动态图表——整体效果
  • threejs纹理加载三(视频加载)
  • VUE笔记(三)vue的语法
  • 探讨uniapp的路由与页面生命周期问题
  • 咸鱼之王俱乐部网站开发
  • Electron+Vue3+TS 打包exe客户端
  • vue3范围选择组件封装
  • 能被整除的数(容斥原理)
  • Modbus转Profinet网关与流量变送器兼容转ModbusTCP协议博图配置
  • HLS实现CORDIC算法计算正余弦并上板验证
  • 高阶数据结构并查集
  • WSL2连接不了外网怎么办?
  • 【C/C++】探索内存对齐的奥秘与优势