算法笔记之DFS与 BFS
来源:互联网 发布:开淘宝培训班 编辑:程序博客网 时间:2024/04/29 14:35
基本思想:
深度优先搜索(DFS,Depth-First Search):
它从某个状态开始,不断的转移状态直到无法转移状态,然后回退到前一步的状态,继续转移到其它状态,如此不继重复,直至找到最终的解。
宽度优先搜索(BFS,Breadth-First Search):
总是先搜索距离初始状态近的状态,也就是说,它是按照开始状态--->只需1次转移就可以到达的所有状态---->只需2次转移就可以到达的所有状态---->.....这样的顺序进行搜索,复杂度为 O(状态数X转移的方式)。 ----一般使用队列
实现方式:
1, DFS,一般使用栈的方式来实现,直接使用递归函数是最方便直接的;
2, BFS, 则使用队列的FIFO原则来实现BFS;
使用方式的比较:
1, 大多情况下使用深度优先搜索实现好,递归函数可以简短地编写,而且状态的管理也更简单,
2, 在求取最短路时深度优先搜索需要反复经过同样的状态,所以此时还是使用宽度优先搜索为好。也就是在求某经过路径时使用DFS, 在求最短路径时,则使用BFS.
使用内存的比较:宽度优先搜索会把状态逐个状态放入队列,因此通常需要与状态数成正比的内存空间。宽度优先搜索会把状态逐个状态放入队列,因此通常需要与状态数成正比的内存空间。
0 0
- 算法笔记之DFS与 BFS
- 【经典算法】:BFS与DFS
- 【算法学习】DFS与BFS
- 图算法之bfs/dfs
- 基础算法 之 BFS & DFS
- 数据结构与算法之DFS/BFS解决扫雷问题<十五>
- BFS/DFS算法介绍与实现
- BFS/DFS算法介绍与实现
- BFS/DFS算法介绍与实现
- BFS/DFS算法介绍与实现
- 算法5:递归与BFS、DFS
- 图论算法基础-BFS与DFS
- 【算法模板之DFS和BFS】
- 图算法之bfs、dfs、prim、Dijkstra
- C++--图算法之DFS,BFS,Dijstra
- 算法学习笔记(一):拓扑排序与传递闭包(通过bfs&&dfs)
- 算法学习笔记 二叉树和图遍历—深搜 DFS 与广搜 BFS
- 019-dfs.bfs-图的遍历-《算法设计技巧与分析》M.H.A学习笔记
- 再见SIM卡,你好eSIM
- 最小公倍数公约数(gcd函数)(模板)
- Android应用的uid和pid
- 常见网站盈利模式
- mysql锁等待分析
- 算法笔记之DFS与 BFS
- 经典SQL语句大全、50个常用的sql语句
- 常见js 函数集合总结
- python 删除某个目录及子目录下所有过期文件
- Android Studio配置初识
- C++ string 与 C char *
- HDU4717
- Python——在Linux和Windows下创建Django项目
- ios多工程依赖