博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bfs,dfs区别
阅读量:4630 次
发布时间:2019-06-09

本文共 538 字,大约阅读时间需要 1 分钟。

一般来说用DFS解决的问题都可以用BFS来解决。

DFS(深搜的同时考虑回溯)

bfs=队列,入队列,出队列;dfs=栈,压栈,出栈

 

bfs是按一层一层来访问的,所以适合有目标求最短路的步数,你想想层层搜索每次层就代表了一步。bfs优先访问的是兄弟节点,只有这一层全部访问完才能访问下一层,也就是说bfs第几层就代表当前可以走到的位置(结点).而dfs是按递归来实现的,它优先搜索深度,再回溯,优先访问的是没有访问过的子节点
DFS多用于连通性问题因为其运行思想与人脑的思维很相似,故解决连通性问题更自然。BFS多用于解决最短路问题,其运行过程中需要储存每一层的信息,所以其运行时需要储存的信息量较大,如果人脑也可储存大量信息的话,理论上人脑也可运行BFS。
总的来说多数情况下运行BFS所需的内存会大于DFS需要的内存(DFS一次访问一条路,BFS一次访问多条路),DFS容易爆栈(栈不易"控制"),BFS通过控制队列可以很好解决"爆队列"风险。
它们两者间各自的优势需要通过实际的问题来具体分析,根据它们各自的特点来应用于不同的问题中才能获得最优的性能。
本文转载于:

转载于:https://www.cnblogs.com/curo0119/p/8417244.html

你可能感兴趣的文章
calico
查看>>
给iframe绑定事件
查看>>
羊车门问题分析
查看>>
理解委托
查看>>
HTML5 Canvas编写五彩连珠(3):设计
查看>>
微信小程序组件 日历
查看>>
MyBatis中jdbcType=INTEGER、VARCHAR作用
查看>>
冒泡排序语法树
查看>>
spring+mybatis事务的readonly属性无效
查看>>
数据挖掘深入理解和学习路径
查看>>
爬取校园新闻首页的新闻
查看>>
linux操作系统-设置静态ip
查看>>
Win8之快速关机
查看>>
TokuDB vs Innodb 基准测试对比
查看>>
01--安装Activiti流程设计器eclipse插件
查看>>
jQuery(一)引入
查看>>
一个球从100米高度自由落下,每次落地后反弹回原高度的一半; * 再落下,求在第几次之后反弹高度小于0.1米, * 并计算在这一次落地时共经过多少米?...
查看>>
祝大家圣诞节快乐!
查看>>
html的body内标签之input系列1
查看>>
CSS-hover
查看>>