一、深度优先搜索
1.深度优先搜索简介
深度优先搜索简称深搜(DFS),英文全称“Depth first search”,它的中心思想是不撞南墙不回头,也就是一条路走到头之后,没路走了,才回头。
2.图的深搜遍历
3.深搜应用
除了上面描述的在实际的图中的直观的搜索外,DFS 还可以像 BFS 一样用在隐式不直
观的遍历问题中。
实际上,大多数时候,DFS 也恰恰是用在这类隐式的实际问题中的。
但是,DFS 无法像 BFS 一样解决最短步数问题,思考:为什么?
DFS 不能求最短路径。
写出刚才 DFS 中每个点被遍历到的次序
显然,3 可以从点 1 走一步到达,但在 DFS 中不能保证一定沿着最短路径前进。
二、宽度优先搜索
1.宽度度优先搜索简介
宽度优先搜索简称宽搜(BFS),又称广搜,英文全称“Breadth first search”,它的中心思想是扩散式的遍历,也就是先遍历当前节点,然后遍历当前节点的全部邻接点,重复执行。
2.图的宽搜遍历
假设从 1 出发,进行宽度优先搜索,有颜色表示已访问
3.宽搜应用
用 BFS 进行搜索,当我们访问到一个点时,一定是通过最短路径走到它的。
这是由于 BFS 利用队列去枚举点,所以访问顺序按和起点的距离已经排好了序,起点到先
出队的点的距离一定小于等于后出队的点。
因此在一些问题中,我们可以利用 BFS 找最短路。