算法之美-DFS与BFS的比较

DFS和BFS都能遍历图的所有节点,但DFS常用于求图的联通分量和两点间是否有连接,而BFS适用于解决最短路径问题。通常,已知节点联通时用BFS,不确定连接时用DFS。两者可以相互转换,明确连接关系后建议使用BFS。例如,从高数字到低数字移动的最大距离问题。
摘要由CSDN通过智能技术生成

什么时候用DFS什么时候有用BFS呢

DFS与BFS都可以把所有直接或间接相连接的点都遍历到,但是因为机制的不一样所以用处也会有所不同。

DFS(深度优先)一般仅仅用于求一个图有多少个联通分量,看看两个结点之间是否互相连接。

注意:一般已经确定了某几个点之间是互相联通的情况下,就应该不要考虑使用DFS去解决问题了,因为会有更好的策略。

一般情况下,我们认为使用递归的DFS,可以求得能到达的最远距离,因为递归从一个结点开始会一只走到头,直到走不通再返回,好像看起来可以求出来最长的一条路径。

 

BFS(广度优先)通过队列,把与某个结点直接相连的结点都存入队列中,按照与原结点的距离的近远再依次遍历间接相连的结点。广度优先本身就是用来处理最短与最长路径的问题。

总结:一般求图的联通性的时候才会使用深度,其他的情况都可以用广度来代替深度。有些问题让求到达的最远的距离,或是求能受到影响到的范围,因为只要是相连接的点,不管是直接还是间接,肯定已经相连了,所以用广度就可以解决问题了。

有些问题,点与点之间连接在一起的条件是不确定的,在某些条件下是相连的,有可能在其他条件下就不会连接在一起了,这时候只能考虑深度了...(邻接表与邻接矩阵都是表示图中点与点相连状态的)

所以广度的一般深度都可以实现,但是有些问题只能深度来实现了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wespten

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值