当目标节点的深度已知时,哪种图搜索算法最好使用 BFS 或 DFS?
When depth of a goal node is known, Which graph search algorithm is best to use BFS or DFS?
在图中,当我们知道目标节点的深度时,使用哪种图搜索算法最快:BFS 或 DFS?
您如何定义 "best" ?
如果您知道目标节点距离根节点(您开始搜索的节点)深度 n
,BFS - 将确保搜索不会迭代具有 depth > n
。
也就是说,DFS 可能仍然 "choose" 这样的路由会比 BFS 更快(迭代更少的节点)。
综上所述,我认为您不能在这种情况下定义 "best"。
正如我在评论中提到的,如果解决方案位于已知深度 d,则可以使用 depth-limited search 而不是 DFS。对于所有三种方法(BFS、DFS 和 DLS),算法复杂度与状态 space 图中的节点和链接数量成线性关系,在最坏的情况下(即 O(|V|+|E|) .
实际上,根据 d,DLS 可能会更快,因为 BFS 需要开发搜索树直到深度 d-1,并且可能是深度 d 的一部分(所以几乎是整棵树)。使用 DLS,这种情况只会在最坏的情况下发生。
在图中,当我们知道目标节点的深度时,使用哪种图搜索算法最快:BFS 或 DFS?
您如何定义 "best" ?
如果您知道目标节点距离根节点(您开始搜索的节点)深度 n
,BFS - 将确保搜索不会迭代具有 depth > n
。
也就是说,DFS 可能仍然 "choose" 这样的路由会比 BFS 更快(迭代更少的节点)。
综上所述,我认为您不能在这种情况下定义 "best"。
正如我在评论中提到的,如果解决方案位于已知深度 d,则可以使用 depth-limited search 而不是 DFS。对于所有三种方法(BFS、DFS 和 DLS),算法复杂度与状态 space 图中的节点和链接数量成线性关系,在最坏的情况下(即 O(|V|+|E|) .
实际上,根据 d,DLS 可能会更快,因为 BFS 需要开发搜索树直到深度 d-1,并且可能是深度 d 的一部分(所以几乎是整棵树)。使用 DLS,这种情况只会在最坏的情况下发生。