AlgoMooc

15 / 28基础内容

数据结构动画

加载中
正在加载动画引擎...

本课导读

图是点和边组成的网,能表达任意两点的关系,比树更自由。地图导航、社交网络、推荐系统底层都是图。

你将学到
  • 顶点、边、邻接表存法
  • 用 BFS / DFS 遍历整张图
  • 为什么必须记「已访问」防止转圈

图是什么:顶点与边

图是一种由顶点组成的结构。顶点可以想象成“地点”,边是连接地点的“道路”。比如地铁图:每个站是顶点,线路是边。图用来表示事物之间的任意关系,非常灵活。

有向图、无向图与带权图

无向图的边没有方向,像双向道路,两人可以互相访问。有向图的边有箭头,像单行道,只能从一个顶点到另一个。带权图的边带有数值(权重),比如距离或时间,用来表示“代价”。

存储方式:邻接表 vs 邻接矩阵

邻接矩阵用二维数组存储,matrix[i][j] 表示顶点 i 到 j 是否有边(或权重)。适合稠密图,但浪费空间。邻接表为每个顶点维护一个链表,只存实际存在的边,节省空间,适合稀疏图。选择哪种取决于图的边数。

图的遍历:BFS 与 DFS 及 visited

BFS(广度优先搜索)从起点开始,一层层向外访问,像水波扩散,适合找最短路径。DFS(深度优先搜索)沿着一条路走到底,再回头,像走迷宫。两者都需要 visited 数组记录已访问顶点,避免重复和死循环。

典型应用与复杂度

应用说明常见算法时间复杂度
最短路径找两点间最小权重的路径Dijkstra, FloydO((V+E)logV) / O(V³)
连通性判断图是否连通或找连通分量DFS, BFS, Union-FindO(V+E)
拓扑排序对有向无环图排序,任务依赖Kahn, DFSO(V+E)

图算法广泛应用于社交网络、地图导航、任务调度等场景。理解基本概念后,就能应对大部分面试和工程问题。

吴师兄提示:图可能有环,遍历一定要 visited 标记。

学完练一练

把刚学的结构放进 LeetCode 题里用一次。

去图解题库实战