BFS和DFS

Anonim

BFS与DFS

广度优先搜索(也称为BFS)是一种用于扩展特定图的所有节点的搜索方法。它通过搜索每个单独的解决方案来完成此任务,以便检查和扩展这些节点(或其中的序列的组合)。因此,BFS不使用启发式算法(或通过多个场景搜索解决方案的算法)。获得所有节点后,它们将被添加到称为First In,First Out队列的队列中。那些尚未探索的节点被“存储”在标记为“打开”的容器中;一旦探索,它们被运送到一个标记为“封闭”的容器中。

深度优先搜索(也称为DFS)是一种搜索方法,它深入挖掘搜索的子节点,直到达到目标(或者直到存在没有任何其他排列或“子节点”的节点)。找到一个目标后,搜索会回溯到已经使用解决方案的上一个节点,重复该过程,直到所有节点都已成功搜索。因此,节点继续被搁置以进行进一步探索 - 这称为非递归实现。

BFS的特点是空间和时间复杂性,完整性,完整性证明和最优性。空间复杂度是指搜索最深层节点数量的比例。时间复杂度是指用于考虑节点在搜索中将采用的每个路径的实际“时间”量。完全性本质上是一种搜索,它可以在图形中找到解决方案,而不管它是什么类型的图形。完整性的证明是在一定深度的节点中找到目标的最浅层。最后,最优性是指未加权的BFS - 这是用于单位步骤成本的图表。

DFS是使用生成树的最自然的输出 - 生成树是由所有顶点和无向图中的一些边组成的树。在这种形式中,图形被分为三类:前向边缘,从节点指向子节点;后边缘,从节点指向较早的节点;和交叉边缘,它们不执行其中任何一个。

摘要:

1. BFS搜索图中的每个解决方案以扩展其节点; DFS在子节点内深入挖掘,直到达到目标。

BFS的特点是空间和时间的复杂性,完整性,完整性证明和最优性; DFS最自然的输出是一个生成树,有三个类:前沿,后沿和交叉边。