图的遍历

图的遍历问题分为四类:

遍历完所有的边而不能有重复,即所谓「一笔画问题」或「欧拉路径」;
遍历完所有的顶点而没有重复,即所谓「哈密顿路径问题」。
遍历完所有的边而可以有重复,即所谓「中国邮递员问题」;
遍历完所有的顶点而可以重复,即所谓「旅行推销员问题」。
对于第一和第三类问题已经得到了完满的解决,而第二和第四类问题则只得到了部分解决。

第一类问题就是研究所谓的欧拉图的性质,而第二类问题则是研究所谓的哈密顿图的性质。

BFS

BFS需要和队列配合使用。

可以在遍历整个图的同时,求出原点到每个点的最短距离。(每条边边权为11

DFS

DFS需要和栈配合使用,但是因为计算机中可以使用递归,所以事实上这个栈并不需要自己亲自维护。

一些图论算法,比如欧拉回路生成一组解,Tarjan求连通分量,都是用DFS。

并查集

如果只需要得到图的连通块数,和每个连通块的大小,那么可以使用并查集。

并查集和前面两个相比,优点是不需要存边。

参考题目

  1. 图的遍历
    1. 图的遍历问题分为四类:
    2. BFS
    3. DFS
    4. 并查集
    5. 参考题目