DFS与BFS总结

144 阅读1分钟

DFS深度优先搜索):不撞南墙不回头

BFS深度优先搜索):发散性寻找(分身寻找)

以经典例题:迷宫问题为例

画个迷宫1表示墙,0表示路。
在这里插入图片描述

DFS思想

从起点开始,沿着一条路一直走到底,如果发现不能到达目标解,那就返回到上一个节点,然后从另一条路开始走到底(即尽量往深处走

BFS思想

从起点开始,逐层寻找(发散性寻找)(即往四周走

DFS优点:消耗内存少 (容易时间超限)
BFS优点:消耗时间少 (容易内存超限)
DFS适合题目类型:给定初始状态跟目标状态,要求判断从初始状态到目标状态是否有解
BFS适合题目类型:给定初始状态跟目标状态,要求求出从初始状态到目标状态的最优解

例如:上述的迷宫问题。
若是问:从迷宫左上角到迷宫右下角是否存在路径长度为9的路径,则用DFS。
若是问:从迷宫左上角到迷宫右下角的最短路径是多少,则用BFS。