2.3 KiB
2.3 KiB
图论总结篇
从深搜广搜 到并查集,从最小生成树到拓扑排序, 最后是最短路算法系列。
至此算上本篇,一共30篇文章,图论之旅就在此收官了。
在0098.所有可达路径 ,我们接触了两种图的存储方式,邻接表和邻接矩阵,数量掌握两种图的存储方式很重要。
这也是大家习惯在核心代码模式下刷题 经常忽略的 知识点。因为在力扣上刷题不需要掌握图的存储方式。
深搜与广搜
深搜与广搜是图论里基本的搜索方法,大家需要掌握三点:
- 搜索方式:深搜是可一个方向搜,不到黄河不回头。 广搜是围绕这起点一圈一圈的去搜。
- 代码模板:需要熟练掌握深搜和广搜的基本写法。
- 应用场景:图论题目基本上可以即用深搜也可以广搜,无疑是用哪个方便而已
同样是深搜模板题,会有两种写法,
在0099.岛屿的数量深搜.md 和 0105.有向图的完全可达性,涉及到dfs的两种写法。
我们对dfs函数的定义是 是处理当前节点 还是处理下一个节点 很重要,决定了两种dfs的写法。
这也是为什么很多录友看到不同的dfs写法,结果发现提交都能过的原因。
而深搜还有细节,有的深搜题目需要回溯,有的就不用回溯,
需要计算路径的问题,一般需要回溯,如果只是染色问题 就不需要回溯。
例如: 0105.有向图的完全可达性 深搜就不需要回溯,而 0098.所有可达路径 中的递归就需要回溯,文章中都有详细讲解
注意:以上说的是不需要回溯,不是没有回溯,只要有递归就会有回溯,只是我们是否需要用到回溯这个过程 才是要考虑的
广搜注意事项,很多录友写广搜超时了。
深搜和广搜是图论的基础,也有很多变形,我在图论里用最大岛屿问题,讲了很多
并查集
最小生成树
拓扑排序
最短路算法
算法4,只讲解了 Dijkstra,SPFA (Bellman-Ford算法基于队列) 和 拓扑排序,