深度优先

一、定义:

深度优先搜索的思路和树的先序遍历很像,下面是百度百科上的定义:

深度优先遍历图的方法是,从图中某顶点v出发:

(1)访问顶点v;

(2)依次从v的未被访问的邻接点出发,对图进深度优先遍历;直至图中和v有路径相通的顶点都被访问;

(3)若此时图中尚有顶点未被访问,则从一个未被访问的顶点出发,重新进行深度优先遍历,直到图中所有顶点均被访问过为止。 当然,当人们刚刚掌握深度优先搜索的时候常常用它来走迷宫.事实上我们还有别的方法,那就是广度优先搜索(BFS).

对于定义的理解,可以结合斐波那契数列(虽然用递归来写斐波那契是一种很糟糕的写法)来进行理解,如下图:


其中,右边这个树上的顺序是这样的:

可以结合遍历的思想来理解DFS;

DFS的题目大致可以分为两类:

1、对图的连通性进行检验:如迷宫问题,图的条件搜索。

2、DFS搜索顺序和规则问题,通过你穷举所有答案,找出符合条件的解。即爆搜问题。

文档更新时间: 2023-05-16 21:49   作者:admin