深度优先搜索(Depth First Search)

深度优先搜索简称DFS,是一种以“深度“为第一关键词的算法,当碰到岔道口时,总是优先考虑其中某一条路径,(i.e.一条路走到黑)如果碰到死胡同再依次返回刚才路径上的各个结点选择另一条路径继续模拟以上步骤,这种算法在数和图的应用中常见,DFS最形象的描述应该就是走迷宫了,对于每一个岔道口我们都有选择,选定一个方向依次遍历所有的岔道口,定会找到出口,而在现实中模拟DFS的方式就是”让右手贴着墙壁一直走,定会遵循DFS的原理”
DFS其实是栈的应用,而在算法题中最常见的就是递归的方式(递归本身就是栈的应用,只是它是由系统自动创建的“系统栈”)其中,DFS一直遵循“岔道口“与”死胡同“的思路,对于递归来说,岔道口就是递归式子而死胡同便是递归边界,因此灵活运用递归就是DFS的最好诠释,当然,DFS并不限于递归,自然也有直接使用stack的方式和思想,只不过使用递归最为方便和简单。这里再次回顾一下递归,递归需要满足的最根本条件就是递归式和递归边界两个,格式是:

  1. 递归边界
  2. 递归式,这里递归式可以不止有一个,可以是两个或者更多
    再次:”剪枝“的思想就体现在DFS当中,即通过题目的限制来节省DFS的计算量从而达到节省题目时间开销的目的,这种思路在数据出现极端条件下有良好的表现。

总结:DFS与BFS的最根本差别就在于DFS专注于深度的关键词,BFS专注于广度的关键词,从实现方法上,DFS使用”栈“,BFS使用”队列“,就我目前接触到的题目来看,DFS应用于一种”存在岔路口可以选择,并且要求找到某种最优解”的问题,二BFS则引用于“查找某”块“某”片“或者某部分符合题目要求的块状面积,体积或者是和”层次”有关的思想算法中,当然,很多题目即可以使用BFS的算法,也可以使用DFS的算法,例如对于给定矩阵寻找最短路径的问题,DFS中体现的就是类似于迷宫的深度来求最小深度,BFS中体现的就是“层次”最终返回最小层次的思路,对于这个题目案例来讲,BFS应该优于DFS。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

苯酸氨酰糖化物

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

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

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

打赏作者

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

抵扣说明:

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

余额充值