一、DFS和BFS的区别和优势
1. 说明:
1. BFS(宽度有限搜索)
2. DFS(深度有限搜索)
2. 优劣势:
- BFS 需要把下一层所有的方案都存下来,需要很大的空间,空间是指数级别的;
DFS 需要的空间只与路径的长度有关系。 - BFS优势:有可以
寻找最小
的优势 (最小性) - DFS:一条路走到黑
- DFS劣势:
- 空间复杂度和深度成正比
- C++的限制:栈空间默认只有4M
- DFS搜索时,系统栈分到栈空间里面的,当搜索层数太多时,系统栈就会爆掉,就是RE,大概搜索
10万
层时就会RE - 所以说,如果层数深的话,尽量用BFS,避免爆栈
3. 区别
BFS:
- 空间是指数级别的,比较大!!!
- 不会有爆栈的风险
- 能搜索:最短,最小……
DFS:
- 空间和深度成正比,比较小!!!
- 有爆栈的风险,比如树的深度最坏可能有100000层,此时会爆栈
- 不能搜:最短,最小……