深度优先与广度优先

时间:2013-12-30 14:17:27

标签: algorithm tree graph-algorithm depth-first-search breadth-first-search

根据我的经验,似乎DFS比BFS更受欢迎。例如,DFS的内存效率更高。但我只是想知道什么时候BFS会超过DFS?在某些情况下,我们应该选择BFS而不是DFS?

2 个答案:

答案 0 :(得分:2)

BFS的优势在于它是按级别进行的,所以如果您有理由相信您在顶级节点中寻找的任何内容,BFS可能会更好。如果你确定它在底部,DFS可能会更好,因为它不会先采取任何特定的水平。

我记得阅读的例子是在寻找医疗记录时,你可能需要比旧版医疗记录更新的医疗记录,这些记录可能位于树的底部。

答案 1 :(得分:0)

对于任意图形,没有这样的方法来证明哪一个更好,因为在某些情况下DFS在其他情况下更有效BFS是有效的。但对于树木,你肯定更喜欢树木。例如,您正在遍历二叉树,DFS所需的堆栈空间为O(logN),而BFS则为O(N)队列。但是如果你使用的是稀疏图,那么BFS可能会使用比DFS更少的空间。平均时间复杂度对于两者都是相同的但是如果解决方案存在于更高深度的根或BFS(如果它更接近根),则可能会发现DFS更可取