图算法学习总结1:理论知识篇
·
学习了数据结构的图,但是算法并没有很熟练?也许我们需要一个总结!
一、图算法学习路线图
1. 图的遍历算法 (基础)
2. 拓扑排序 (有向图)
3. 最小生成树算法 (无向连通图)
4. 最短路径算法 (带权图)
5. 关键路径分析 (工程网络)
二、每个算法深度总结
1. 深度优先搜索 (DFS)
- 关键词:递归/栈、回溯、连通性、“一条路走到黑”
- 核心思想:从起点出发,沿着一条路径尽可能深入搜索,直到无法继续,然后回溯到上一个节点继续探索未访问的分支
- 记忆要点:像走迷宫,一条路走到死胡同再返回上一个岔路口
- 复杂度:O(V+E),适合寻找路径、连通分量、环检测
2. 广度优先搜索 (BFS)
- 关键词:队列、层次遍历、“涟漪扩散”、最短路径(无权图)
- 核心思想:从起点出发,先访问所有直接相邻节点,再访问相邻节点的相邻节点,像水波一样一圈圈向外扩散
- 记忆要点:社交网络的"朋友的朋友"推荐机制
- 复杂度:O(V+E),保证找到无权图的最短路径
3. 拓扑排序
- 关键词:DAG(有向无环图)、入度、依赖关系、线性序列
- 核心思想:对有向图的顶点进行排序,使得对于每条有向边(u,v),u在排序中都出现在v之前
- 记忆要点:课程先修关系——先上基础课,再上专业课
- 关键步骤:反复选择入度为0的节点,删除其出边,更新邻居入度
- 复杂度:O(V+E),只能应用于无环图
4. Prim算法 (最小生成树)
- 关键词:贪心、点集扩张、稠密图优化、局部最优
- 核心思想:从任意顶点开始,每次选择连接已选顶点集合和未选顶点集合的最小权边,逐步扩展生成树
- 记忆要点:像水滴从小到大凝结,每次吸附最近的水分子
- 复杂度:O(V²),适合稠密图,与顶点数量关系更大
5. Kruskal算法 (最小生成树)
- 关键词:边排序、并查集、稀疏图优化、全局视角
- 核心思想:将所有边按权值排序,从小到大依次选择,如果加入该边不形成环,则将其加入生成树
- 记忆要点:像搭积木,从最小的开始,不形成圈圈
- 复杂度:O(ElogE),适合稀疏图,与边的数量关系更大
6. Dijkstra算法 (单源最短路径)
- 关键词:贪心、优先队列、无负权、确定性
- 核心思想:每次从未确定最短路径的顶点中选择距离源点最近的,用它更新其他顶点的距离
- 记忆要点:“已知最近的点,它的邻居也该更新了”
- 关键限制:不能处理负权边
- 复杂度:O(V²)或O((V+E)logV)使用优先队列
7. Floyd算法 (全源最短路径)
- 关键词:动态规划、三重循环、全源、允许负权
- 核心思想:通过动态规划,考虑每个顶点k作为中间点,检查是否可以通过k使任意两点i,j间的路径更短
- 记忆要点:任意两点间,可能经过第三个点更短
- 关键公式:dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j])
- 复杂度:O(V³),简单但适用于小规模图
8. 关键路径 (AOE网络)
- 关键词:AOE网络、最早/最晚时间、工程调度、决定性路径
- 核心思想:在表示工程的有向图中,计算每个事件的最早/最晚发生时间,关键路径上的事件最早最晚时间相等
- 记忆要点:“木桶效应”——决定项目总时间的是最长路径
- 关键步骤:
- 拓扑排序计算最早发生时间
- 逆拓扑排序计算最晚发生时间
- 找出最早=最晚的节点序列
- 应用:工程项目管理、任务调度
三、终极记忆口诀
遍历算法两兄弟,DFS深搜回溯记,BFS广搜队列齐,
拓扑排序看入度,零入度先出不迟疑。
最小生成两算法,Prim点扩张适合密,Kruskal边排序查并集,
最短路径要分清,Dijkstra单源无负权,Floyd全源三循环递。
关键路径工程用,最早最晚时间须相等,
先拓扑后逆排序,项目工期它决定。
图论算法八样精,应用场景要分明,
关键词记心中存,算法思想自然清。
四、对比速记表
| 算法类别 | 算法名称 | 核心数据结构 | 适用图类型 | 关键词 |
|---|---|---|---|---|
| 遍历 | DFS | 栈/递归 | 通用 | 深入、回溯、连通性 |
| 遍历 | BFS | 队列 | 通用 | 层次、扩散、最短(无权) |
| 排序 | 拓扑排序 | 队列/栈 | DAG | 入度、依赖、线性序列 |
| MST | Prim | 数组/优先队列 | 无向连通 | 点扩张、稠密、贪心 |
| MST | Kruskal | 并查集 | 无向连通 | 边排序、环检测、稀疏 |
| SPP | Dijkstra | 优先队列 | 非负权 | 贪心、单源、确定性 |
| SPP | Floyd | 二维数组 | 全源(无负环) | 动态规划、三重循环 |
| 网络 | 关键路径 | 栈 | AOE网 | 最早/最晚、拓扑、工期 |
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)