在SSC中搜索特定节点时,DFS是否比BFS快?

时间:2018-11-07 16:43:42

标签: graph-theory depth-first-search breadth-first-search strongly-connected-graph

我想在强连接组件中找到从节点到其他节点的最短路径,这些节点可以任意选择。想到了两种搜索方法:深度优先搜索或宽度优先搜索。
可以证明在某些情况下比其他情况更可取吗?
一种情况可能是稀疏图与密集图SCC。

2 个答案:

答案 0 :(得分:0)

DFS不保证如果从源顶点开始在另一个节点2之前访问节点1,则节点1比节点2更靠近源。

从DFS的递归性质可以很容易看出这一点。它访问“更深”的节点,或者您可以先说离源节点更远。它从源顶点开始尽可能远地移动,然后返回到未访问的已访问顶点的相邻节点。

另一方面,BFS总是按节点到源的距离的增加顺序访问节点。它首先访问图的相同“级别”上的所有节点,然后继续下一个级别。

此外,纯粹从实用角度来讲,使用非递归算法(BFS)更具生产力。

答案 1 :(得分:0)

BFS首先访问连接到当前节点的所有节点,因此,找到的每个新节点都使用尽可能少的边数进行连接。另一方面,DFS沿着每个节点的一条边一直走,直到没有边可以跟随为止,而没有为您提供所需的最短路径。