广度优先搜索(BFS)和深度优先搜索(DFS)

Breadth First Search(BFS) and Depth First Search(DFS)

在算法的在线课程中看到这条信息: BFS 用于查找无向图的连通分量,而 DFS 用于查找有向图的连通分量。 我可以在这里做相反的事情吗?如果我这样做会对性能有什么不利影响?

这不是DFS和BFS的主要区别。它们都可以应用于有向图或无向图。通常 DFS 消耗的内存比 BFS 低得多,因为 BFS 必须存储搜索树每一层的所有子指针。但是DFS可以把队列(只有一条路)存入栈

通常 DFS 比 BFS 更快,复杂度低于 space,并且易于实现。但在某些问题上(比如寻找最短路径),DFS 不如 BFS 有用或高效。

从搜索树的角度来看,BFS和DFS其实是同一种算法,只是数据结构不同