【发布时间】:2013-12-30 14:17:27
【问题描述】:
根据我的经验,DFS 似乎比 BFS 更受欢迎。例如,DFS 的内存效率更高。但我只想知道 BFS 什么时候会超过 DFS?在什么情况下,我们应该选择 BFS 而不是 DFS?
【问题讨论】:
-
如果你有一个无限图(每个顶点的度数有限)并且保证存在解,BFS保证找到它,而DFS可以很好地运行无限时间
-
@DmitryBychenko 无限图不适合任何物理存在的机器,所以这几乎不值得考虑。
-
@delnan 好吧,从技术上讲,这是真的,您不能拥有实际上无限的图,但是您可以拥有非常大的图,而不必存储每个节点和边。例如,单元格网格是有效“无限”图的一个很好的例子,它可以以非常稀疏的方式存储。所以我不同意它不值得考虑。
-
@Kyle 但如果它是有限的,BFS 和 DFS 都将终止,哪一个终止得更快取决于起点和目标顶点的确切位置。一个巨大但有限的图不会自动转化为 BFS 的优势。
-
对不起,如果这个问题太宽泛了。但是由于每个人都知道我的真正意思并且他们也给出了我需要的答案,所以我认为没有必要修改这个问题。你怎么看?
标签: algorithm tree graph-algorithm depth-first-search breadth-first-search