深度优先遍历的优势?

来源:5-1 从树的广度优先遍历,到图的广度优先遍历

慕斯卡8072790

2021-09-24

图论中所有深度优先遍历DFS的算法 都可以用广度优先遍历BFS实现,并且时间复杂度都是 O(V+E)

广度优先遍历BFS有一个重要的性质是可得到无权图的最短路径

那么深度优先遍历DFS的优势是什么?是不是图论的无权图路径搜索问题可以无脑直接使用广度优先遍历BFS,而不用考虑深度优先遍历DFS。

写回答

1回答

liuyubobobo

2021-09-25

对于以面试为目的的图论问题,你要是觉得 BFS 更顺手的话,无脑使用 BFS 基本没有问题。


不过有意思的是,我个人是认为 DFS 更顺手的。因为代码量更小。


==========


如果你一定要问 DFS 的“独特优势的话”,是有的,这个优势叫 DFS tree,他有一些特殊的应用。


在这个课程中,介绍“桥”和“割点”的算法,就是 DFS tree 最典型的应用;

介绍拓扑排序的时候,拓扑排序的一种算法的实现(不适用统计入度的方式),是 DFS tree 的应用;

SCC 的一种实现(Tarjan 算法,这个课程没有介绍),也是 DFS Tree 的应用。


但是,这些算法在面试中近乎都不可能碰到。拓扑排序是面试可能考的内容,但是使用统计入度的方式实现其实更容易且直观。


如果对 DFS Tree 感兴趣,这里是一个挺好的 tutorial:https://codeforces.com/blog/entry/68138


继续加油!:)

0
0

玩转算法系列--图论精讲(Java版)

30+小时系统学习,bobo带你克服被图论支配的恐惧

1591 学习 · 324 问题

查看课程