BFS和DFS

在上周学习中遇到了一道深度优先搜索的题 然后就去把深度优先搜索简称DFS学习了一下,因为还有一个广度优先搜索(BFS)与其相通,所以都了解了一下,以下是对其的一些简单介绍。

深度优先搜索(DFS)

- 算法思想:从起始顶点开始,沿着一条路径尽可能深地探索,直到无法继续或达到目标顶点,然后回溯到前一步,继续探索其他路径,直到遍历完所有顶点或找到目标。

- 实现方式:通常使用递归或栈来实现。递归实现简洁直观,利用函数调用栈来保存状态;栈实现则更显式地管理顶点的访问顺序。

- 应用场景:适用于需要快速找到一条从起始点到目标点的路径,如迷宫求解、拓扑排序、判断图中是否存在环等。

广度优先搜索(BFS)

- 算法思想:从起始顶点开始,逐层地向外扩展搜索,先访问距离起始顶点近的顶点,再逐步访问距离更远的顶点,直到遍历完所有顶点或找到目标。

- 实现方式:一般使用队列来实现。将起始顶点加入队列,然后不断取出队列头部的顶点进行访问,并将其未访问的邻接顶点加入队列,直到队列为空。

- 应用场景:常用于求最短路径问题、网络流问题、图的连通性判断等,如在社交网络中查找与某个人距离为k的所有用户。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、动态规划 找到两点间的最短路径,找最匹配一组点的线,等等,都可能会用动态规划来解决。 参考如何理解动态规划中,...
    小碧小琳阅读 25,479评论 2 20
  • 图的搜索算法:BFS和DFS详解(Java实现) 上一篇我们介绍了图的基本概念以及图的存储方式:邻接矩阵和邻接表;...
    一萍之春阅读 13,540评论 0 5
  • “搜索”算法 深度优先搜索算法和广度优先搜索算法都是基于“图”这种数据结构。 图上的搜索算法就是,在图中找出从一个...
    让我们荡起双桨呀阅读 2,801评论 0 1
  • 图是一种灵活的数据结构,一般作为一种模型用来定义对象之间的关系或联系。对象由顶点(V)表示,而对象之间的关系或者关...
    ad丶leo阅读 4,294评论 0 0
  • 图是一种灵活的数据结构,一般作为一种模型用来定义对象之间的关系或联系。对象由顶点(V)表示,而对象之间的关系或者关...
    卡巴拉的树阅读 82,525评论 27 120

友情链接更多精彩内容