图论不发愁:邻接矩阵-邻接表-前向星的“选刀”指南.docxVIP

  • 1
  • 0
  • 约5.61千字
  • 约 12页
  • 2026-06-25 发布于北京
  • 举报

图论不发愁:邻接矩阵-邻接表-前向星的“选刀”指南.docx

图论不发愁:邻接矩阵/邻接表/前向星的“选刀”指南

前言:图论题卡了,可能不是算法问题,而是“刀”选错了

在CSP-J/S复赛的失分报告中,有一个问题很少被单独拿出来讨论,但它的“杀伤力”被严重低估了——图的数据结构选错了。

场景通常是这样的:学生看到一道图论题,判断出了“这题考最短路”,也写出了正确的Dijkstra算法框架,但程序一跑——小数据没问题,大数据要么超时要么爆内存。花了大量时间去优化算法,最后才发现:不是算法不行,是存图的方式根本不支持题目要求的性能。

“邻接矩阵、邻接表、链式前向星”——这三个名字你一定不陌生。但你真的清楚在什么情况下该用哪一个吗?本文不讲图论算法本身,而是专门解决一个更前置的问题:拿到一道图论题,先花30秒判断:用哪种数据结构存这张图。

数据结构选对,代码少写一半、bug少出一半、效率翻一倍。数据结构选错,算法再优也救不回来。

一、三种存图方式的本质差异

在进入选择指南之前,先快速回顾三种存图方式的核心原理。如果你对它们已经很熟悉,可以直接跳到第二节。

1.1邻接矩阵:二维数组打天下

本质:用一个n×n的二维数组g[u][v],记录从节点u到节点v的边的信息(权值或是否存在)。

操作

复杂度

查询uv之间是否有边

O(1)

遍历u的所有邻居

O(n)

添加一条边

O(1)

空间消耗

O(n2)

1.2邻接表:每个节点维护一个邻居清

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档