BFS 与 DFS – 它们之间的区别
BFS 和 DFS 之间的主要区别
- 广度优先搜索(BFS)寻找到达目标的最短路径,而深度优先搜索(DFS)则遍历子树的底部,然后再返回。tracks。
- BFS 的全称是广度优先搜索,而 DFS 的全称是深度优先搜索。
- BFS 使用队列来维护 track 表示要访问的下一个位置。而 DFS 使用栈来保存。 trac下一个要访问的地点的 k。
- BFS是按照树的层数来遍历,而DFS是按照树的深度来遍历。
- BFS 使用 FIFO 列表实现;另一方面,DFS 使用 LIFO 列表实现。
- 在 BFS 中,您永远不会陷入有限循环,而在 DFS 中,您可能会陷入无限循环。
什么是 BFS?
BFS 是一种用于绘制数据图或搜索树或遍历结构的算法。该算法以精确的广度方式高效地访问并标记图中的所有关键节点。
该算法选择图中的单个节点(初始点或源点),然后访问所选节点的所有相邻节点。一旦算法访问并标记起始节点,它就会移动到最近的未访问节点并对其进行分析。
一旦访问过,所有节点都会被标记。这些迭代持续进行,直到图中的所有节点都已成功访问并标记。BFS 的完整形式是广度优先搜索。
什么是 DFS?
深度优先搜索(DFS)是一种用于在图或树中沿深度方向遍历的算法。该算法从根节点开始执行,并依次探索每个分支,直到返回。trac它使用栈数据结构来记忆,获取下一个顶点,并在每次迭代中遇到死胡同时开始搜索。DFS 的全称是深度优先搜索。
BFS 和 DFS 二叉树之间的区别
以下是 BFS 和 DFS 之间的重要区别。
| BFS | DFS |
|---|---|
| BFS 找到到达目的地的最短路径。 | 深度优先搜索(DFS)会遍历到子树的底部,然后再返回。tracks。 |
| BFS 的全称是广度优先搜索。 | DFS 的全称是深度优先搜索。 |
| 它使用队列来保持 trac下一个要访问的地点的 k。 | 它使用堆栈来保存 trac下一个要访问的地点的 k。 |
| BFS按照树的层级进行遍历。 | DFS按照树的深度进行遍历。 |
| 它是使用FIFO列表实现的。 | 它是使用 LIFO 列表实现的。 |
| 与 DFS 相比,它需要更多的内存。 | 与 BFS 相比,它需要的内存更少。 |
| 该算法给出了最浅路径解决方案。 | 该算法不保证最浅路径解决方案。 |
| 无需返回tracBFS中的王者。 | 需要返回tracDFS之王。 |
| 您永远不会陷入有限循环。 | 您可能会陷入无限循环。 |
| 如果您没有找到任何目标,您可能需要扩展许多节点才能找到解决方案。 | 如果没有找到任何目标,则返回叶节点trac国王可能会出现。 |
BFS 示例
在下面的 BFS 示例中,我们使用了具有 6 个顶点的图。
BFS 示例
步骤1)
您有一张包含 0 – 6 之间的七个数字的图表。
步骤2)
0 或零已被标记为根节点。
步骤3)
0 被访问、标记并插入到队列数据结构中。
步骤4)
剩余 0 个相邻且未访问的节点被访问、标记并插入到队列中。
步骤5)
重复遍历迭代,直到访问所有节点。
DFS 示例
在下面的 DFS 示例中,我们使用了一个具有 5 个顶点的无向图。
步骤1)
我们从顶点 0 开始。算法首先将其放入访问列表中,同时将其所有相邻顶点放入 数据结构 称为堆栈。
步骤2)
您将访问位于堆栈顶部的元素(例如 1),然后转到其相邻节点。这是因为 0 已经被访问过。因此,我们访问顶点 2。
步骤3)
顶点 2 在 4 中有一个未访问的附近顶点。因此,我们将其添加到堆栈中并访问它。
步骤4)
最后,我们将访问最后一个顶点 3,它没有任何未访问的相邻节点。我们已经使用 DFS 算法完成了图的遍历。
BFS 的应用
以下是 BFS 的应用:
非加权图
BFS 算法可以轻松创建最短路径和最小生成树,以最短的时间和高精度访问图的所有顶点。
P2P 网络
可以实施 BFS 来定位对等网络中所有最近或相邻的节点。这样可以更快地找到所需的数据。
网络爬虫
搜索引擎 或者网络爬虫可以通过使用 BFS 轻松构建多级索引。BFS 实现从源(即网页)开始,然后访问来自该源的所有链接。
网络广播
广播数据包由 BFS 算法引导,查找并到达其具有地址的所有节点。
DFS 的应用
以下是DFS的重要应用:
加权图
在加权图中,DFS 图遍历生成最短路径树和最小生成树。
检测图中的循环
如果在 DFS 过程中我们发现了回边,则该图存在循环。因此,我们应该对图运行 DFS 并验证回边。
寻找路径
我们可以专门使用 DFS 算法来搜索两个顶点之间的路径。
拓扑排序
它主要用于根据给定的依赖关系对作业组进行调度。在计算机科学中,它用于指令调度、数据序列化、逻辑综合、确定编译任务的顺序。
搜索图中的强连通分量
当图中的每个顶点都有一条路径到其他剩余顶点时,它用于 DFS 图。
解决只有一个解决方案的难题
DFS 算法可以通过在访问集中包含现有路径上的节点来轻松适应搜索迷宫的所有解决方案。












