DFS(深度优先搜索):不撞南墙不回头
BFS(深度优先搜索):发散性寻找(分身寻找)
以经典例题:迷宫问题为例
画个迷宫1表示墙,0表示路。

DFS思想
从起点开始,沿着一条路一直走到底,如果发现不能到达目标解,那就返回到上一个节点,然后从另一条路开始走到底(即尽量往深处走)
BFS思想
从起点开始,逐层寻找(发散性寻找)(即往四周走)
DFS优点:消耗内存少 (容易时间超限)
BFS优点:消耗时间少 (容易内存超限)
DFS适合题目类型:给定初始状态跟目标状态,要求判断从初始状态到目标状态是否有解。
BFS适合题目类型:给定初始状态跟目标状态,要求求出从初始状态到目标状态的最优解。
例如:上述的迷宫问题。
若是问:从迷宫左上角到迷宫右下角是否存在路径长度为9的路径,则用DFS。
若是问:从迷宫左上角到迷宫右下角的最短路径是多少,则用BFS。
158

被折叠的 条评论
为什么被折叠?



