Fork me on GitHub

深度优先搜索和广度优先搜索的简单对比

首先是大方向上面的对比:

两者都能用于图的遍历搜索,很多时候两者都能得到最终的结果。多说时候要最快的得到第一个解,可能dfs要快一些。

 

代码上面的对比:

dfs利用递归实现,bfs多用循环实现,差别不大

但是在于一点就是,dfs用完这个点之后要还回去,而bfs不用,因为它是慢慢扩散的。

 

最后也是最重要的:

使用上面,一般对于有权的有向图和无向图,多用dfs,迷宫的路线,多用dfs;

而对于那些无权的,或者说是权相等的图,多用bfs。

 

最后要提醒的是,不管怎么说,搜索最终的脊髓还是遍历,只不过遍历的方向不像遍历数组一样顺序,而是无序的,但依旧逃不出遍历这个词,而一旦有了这个词那么速度就可想而知了,所以上面的对比只是其次,最重要的我想还是对边界情况的判断,让循环的次数尽可能的小。毕竟不去遍历所有的点有时候得不到最优的解,我也渐渐能体会到速度的缓慢了。等寻路最短路径完成之后我再去尝试用dp去解决这类问题,说不定能好一些。

posted @   LinkinStar  阅读(377)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示