【发布时间】:2016-02-16 19:38:54
【问题描述】:
在关于算法的在线课程中看到以下信息: BFS 用于查找无向图的连通分量,而 DFS 用于查找有向图的连通分量。 我可以在这里做相反的事情吗?如果我这样做会对性能产生什么影响?
【问题讨论】:
标签: algorithm search breadth-first-search depth-first-search
在关于算法的在线课程中看到以下信息: BFS 用于查找无向图的连通分量,而 DFS 用于查找有向图的连通分量。 我可以在这里做相反的事情吗?如果我这样做会对性能产生什么影响?
【问题讨论】:
标签: algorithm search breadth-first-search depth-first-search
这不是 DFS 和 BFS 之间的主要区别。它们都可以应用于有向图或无向图。通常 DFS 消耗的内存比 BFS 低得多,因为 BFS 必须在搜索树的每一层存储所有子指针。但是 DFS 可以将队列(只有一个路径)存储在堆栈中。
通常DFS比BFS快,空间复杂度低,容易实现。但在某些问题上(比如寻找最短路径),DFS 不如 BFS 有用或高效。
从搜索树的角度来看,BFS和DFS其实是同一种算法,只是数据结构不同。
【讨论】: