DFS以及BFS的用途以及对比

Posted jihuabai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DFS以及BFS的用途以及对比相关的知识,希望对你有一定的参考价值。

实现过程中的不同点:

BFS:采用一个队列来控制哪些节点需要访问,以及从上一节点向下一节点转变,多了一个计数器。

DFS:采用递归的思想沿着某一个节点不停的向底下深挖。

相同点:

1 方向表,即(x,y)的四周的方向。

2 状态表,用来判断该节点是否已经访问过了。

3 边界检测,在进行递归或者入队之前必须对边界进行检测,符合条件才能递归或者入队。

4 判断目标,如果出现目标则进行处理。

 

流程:

BFS,DFS的流程大体上都差不多,只不过在上一节点到下一节点的方式上有所区别。

用途:

BFS:找到最小路径(无加权) 例如:组成整数的最小平方数数量

DFS:找到目标 例如:查找最大的连通面积

以上是关于DFS以及BFS的用途以及对比的主要内容,如果未能解决你的问题,请参考以下文章

邻接表实现Dijkstra算法以及DFS与BFS算法

经典图算法Java代码实践:BFS,DFS以及几种最短路径算法

[NOI2013]树的计数

HDU1241 DFS/BFS 求连通块

[bzoj3244] [洛谷P1232] [Noi2013] 树的计数

BZOJ3244UOJ#122NOI2013]树的计数