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

图的存储方式详解(邻接矩阵 + 邻接表)| 算法入门必看

在算法学习中,图是仅次于树的核心数据结构,广泛应用于路径规划、网络拓扑、社交关系等场景。而图的存储是后续图论算法(DFS、BFS、最短路等)的基础——选择合适的存储方式,能直接影响算法的时间和空间效率。

本文将详细讲解图的两种最常用存储方式:邻接矩阵邻接表,从原理、代码实现(C++)、优劣对比到适用场景,层层拆解,新手也能轻松理解、直接复用。

先明确图的基本概念:图(Graph)由顶点(Vertex)和边(Edge)组成,分为无向图(边无方向,如朋友关系)和有向图(边有方向,如网页跳转、依赖关系);边还可带权值(如道路距离、网络带宽),称为带权图

一、邻接矩阵(Adjacency Matrix)

1. 核心原理

邻接矩阵是用二维数组来表示图的存储结构,数组的行和列都对应图中的顶点,数组元素的值表示两个顶点之间是否存在边(或边的权值)。

假设图中有 n 个顶点(编号从 0 到 n-1),定义二维数组 graph[n][n],则:

  • 对于无向图:若顶点 i 和顶点 j 之间有边,则 graph[i][j] = graph[j][i] = 1(无权值);若无边,则为 0;顶点自身(i=j)通常设为 0(无自环时)。

  • 对于有向图:若存在从顶点 i 到顶点 j 的边,则 graph[i][j] = 1(无权值);反之,graph[j][i] = 0;自身设为 0。

  • 对于带权图:将数组元素的值改为边的权值,无边时设为一个极大值(如 INT_MAX),自身设为 0。

2. 可视化示例(直观理解)

以无向无权图为例,假设有 4 个顶点(0、1、2、3),边为 (0,1)、(0,2)、(1,3)、(2,3),其邻接矩阵如下:

顶点

0

1

2

3

0

0

1

1

0

1

1

0

0

1

2

1

0

0

1

3

0

1

1

0

观察可知:无向图的邻接矩阵是对称矩阵,这是其显著特征。

3. C++ 代码实现(通用版)

以下代码涵盖无向无权、无向带权、有向无权、有向带权四种场景,可直接复制使用,注释清晰,新手可快速上手。

#include <iostream> #include <vector> #include <climits> // 用于INT_MAX(带权图无边时的默认值) using namespace std; // 图的邻接矩阵实现(支持无向/有向、无权/带权) c
http://www.jsqmd.com/news/571238/

相关文章:

  • Buck-Boost、Sepic、Cuk… 手把手教你选对DC-DC升降压拓扑(含优缺点对比表格)
  • 基于stm32的智慧超市系统[单片机]-计算机毕业设计源码+LW文档
  • 深度解析:5G球机技术原理、核心参数与应用实践 - 速递信息
  • MobaXterm中文版:远程管理效率优化全攻略
  • Kokoro-82M语音模型实战:如何用Python在Mac上打造个性化语音助手(代码+配置详解)
  • 1688图搜接口有复购率对于选品的你们有帮助吗
  • 龙芯k - 走马观碑组ST驱动移植
  • 终极指南:一键解决iPhone USB网络共享驱动问题
  • 圣女司幼幽-造相Z-Turbo开源模型生态实践:对接ComfyUI与AUTOMATIC1111双平台
  • Java+AI 无缝衔接:Spring AI 聊天模型入门到精通
  • 如何选择国内十大移民机构?2026年4月推荐评测口碑对比五家 - 十大品牌推荐
  • GSE宏编译器完整指南:告别繁琐操作,掌握魔兽世界智能宏编程
  • Unity 2018+ Sprite Atlas实战:如何用分组策略优化你的2D游戏性能
  • 威联通NAS安全防护全攻略:10个必做设置让你的数据固若金汤
  • Phi-3-mini-4k-instruct-gguf作品展:面向开发者的技术文档摘要生成样例
  • 用GDAL实现GIS矢量数据读写与空间分析
  • RMBG-2.0实测参数详解:batch_size=1/resize=1024/alpha_threshold=0.5设定依据
  • 2026碳化硅石墨坩埚厂家推荐榜 定制适配多场景 - 资讯焦点
  • 2026专业护眼产品深度评测:告别眼干涩疲劳,哪款才是“医用级“长效养护的选择?
  • 别再混淆FF和FFS了!从EDKII编译流程讲起,彻底搞懂UEFI固件镜像的‘打包’逻辑
  • 消除屏幕闪烁:Stillcolor为Apple Silicon Mac带来无抖动视觉体验
  • 无人机飞控实战:四元数微分方程在PX4中的实现与调参技巧
  • 3种方法永久解决IDM激活弹窗问题 开源工具全解析
  • 实战演练:基于快马平台与vscode codex思想,快速构建业务数据可视化仪表盘
  • 如何将微信聊天记录变为你的个人数字资产?WeChatMsg全攻略
  • 2026网络地板厂商口碑榜揭晓,这些品牌值得关注,陶瓷抗静电地板/硅酸钙抗静电地板,网络地板公司口碑推荐 - 品牌推荐师
  • 在AirSim里用Python实现LQR控制:让无人机自动跟踪预设轨迹(附完整代码)
  • 3步解决Augment登录限制:无限续杯插件使用指南
  • M9A:《重返未来:1999》智能自动化助手——解放双手的游戏体验革新
  • 2026年3月毛绒/搪胶/塑胶/电子机芯/功能/玩具厂家全景测评:五家标杆企业深度解析 - 2026年企业推荐榜