java - 为什么你保证找到你的结果,如果它在 BFS 的图中而不是 DFS?

标签 java search graph breadth-first-search depth-first-search

我在某处读到 DFS 不能保证找到解决方案,而 BFS 是.. 为什么?我真的不明白这是怎么回事.. 有人可以为我展示一个案例来证明这一点吗?

最佳答案

DFS,因为它是深度优先搜索,可能会陷入无限分支,永远无法到达您正在寻找的顶点。 BFS 每次迭代都会遍历与根距离相同的所有顶点,无论它们在哪个分支上,因此它最终会找到所需的顶点。
示例:

root -> v1 -> v2 -> v3 -> ... 永远持续下去
|-> 你。

在此示例中,如果 DFS 从根开始,然后继续到 v1。它永远不会到达你,因为它进入的分支是无限的。 BFS 将从根到 v1 或 u,然后再到另一个。

关于java - 为什么你保证找到你的结果,如果它在 BFS 的图中而不是 DFS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4416726/

相关文章:

ruby-on-rails - 如何使用 'where'的 'ActiveRecord::QueryMethods'方法来限制搜索?

database - 图数据库建模 : multiple edges are better than single edges with properties?

algorithm - 为运行时间为 O(k(|V|+|E|)) 的单源最短路径问题设计一个算法

java - 包装类的 LinkedList 迭代器实现

java - 尝试获取具有相同扩展名的所有文件后 Activity 卡住

java - 如何访问本地内部类中的外部类方法局部变量?

mysql - 从多个mysql数据库中搜索一个字段?

javascript - 逻辑组合不同来源的搜索结果的最佳方式是什么?

d3.js - dc.js 中的双 Y 轴折线图

java - 如何使用 Dagger 2 在 Quartz 作业中注入(inject)依赖项