简单搜索(广度优先搜索、深度优先搜索)总结

简单搜索

广度优先搜索

概述

广度优先搜索(宽度优先搜索,BFS)是树或图的一种遍历策略。其思想是从一个顶点V0开始,遍历每一个点时,依次遍历其所有的邻接点,然后再从这些邻接点出发,同样依次访问它们的邻接点。按照此过程,直到图中所有点都被访问到。

应用

经典问题:迷宫问题。

解题思路

广度优先搜索在解题中,先将题目进行解释,理清问题中树的层次,先对第一层结点进行检查,检查目标是否存在;不存在则将第一层所有结点逐一进行扩展至邻接点,得到第二层结点,再次检查目标是否存在;不存在则继续扩展,直到找到目标。
注:可选用队列方法。

深度优先搜索

概述

深度优先搜索算法(DFS)是一种用于树或图的遍历策略。 其思想沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所在边都己被探寻过或者在搜寻时结点不满足条件,搜索将回溯到发现节点v的那条边的起始节点,整个进程反复进行直到所有节点都被访问为止。

应用

经典问题:棋盘问题、油田问题。

解题思路

深度优先搜索在解题中,首先从一个未被遍历过的顶点开始,遍历其邻接点,再由邻接点继续深层次向后遍历,一直到所能够遍历到的所有邻接点结束,并且遍历过程中讲遍历过的点进行已遍历的标记;到达最深深度后,进行回退,从未开始遍历的点开始类似操作的深度遍历,直到遍历完所有点,得到结果。
注:注意遍历过程中,对已遍历点的标记。

算法对比

  1. 内存方面
    广度优先搜索在树的层次较深、子节点数较多的情况下,消耗内存十分严重,因此广度优先搜索更适用于节点的子节点数量不多,并且树的层次不会太深的情况。
    深度优先搜索在搜索过程中,每一层只需维护一个结点,因此相对于广度优先搜索内存消耗更少。
  2. 时间方面
    在类似寻找最短路径的问题中,深度优先搜索每一次得到的结果都不能保证是最短的,因此需要所有搜索结束后进行取舍,每次搜索还要进行标记的变更,效率不高。
    广度优先搜索对于解决最短或最少的问题效果显著,每个结点只访问一遍,结点总是以最短路径被访问,所以第二次路径确定不会比第一次短,因此耗时更短,寻找深度更小。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值