深度优先搜索实质上是图算法中的一种,其简要过程是:从顶点开始,对每个可以访问到的分支路径进行访问,直到不能继续往下深入为止,并且每个结点只访问一次
简而言之:深搜(也叫回溯法)采用的是“一直往下走,走不通了就掉头,换一条路再往下走”。
深度优先搜索的简要步骤:
1:访问顶点v
2:从顶点v开始,对未访问过的v的邻接点开始,对图进行深度优先遍历。直到图中有路径相通的顶点都被访问过为止。
事实上,这个步骤是一个递归步骤:访问了v之后,对v未访问的邻接点进行访问(此时该邻接点相当于之前的顶点v,再继续重复这个过程)
深度优先搜索的实质就是穷举,按照一定的顺序和规则不断地去尝试,直到找到问题的解。
对于一个问题的第一个状态叫做初始状态,最后要求的状态叫做目的状态。
在搜索的过程中,对当前状态进行检测,如果当前状态满足目的状态,那么这个当前状态就是结果之一。
深度优先搜索用一个数组存放产生的所有状态。
(1) 把初始状态放入数组中,设为当前状态;
(2) 扩展当前的状态,产生一个新的状态放入数组中,同时把新产生的状态设为当前状态;
(3) 判断当前状态是否和前面的重复,如果重复则回到上一个状态,产生它的另一状态;
(4) 判断当前状态是否为目标状态,如果是目标,则找到一个解答,结束算法。
ÿ