深度优先算法,是计算机程序的一种编制原理,就是在一个问题出现多种可以实现的方法和技术的时候,应该优先选择哪个更合适的,也是一种
普遍的逻辑思想,此种思想在运算的过程中,用到计算机程序的一种递归思想。
深度优先搜索算法(Depth-First-Search),解决的是图的搜索问题,是搜索算法的一种,属于盲目搜索。利用深度优先搜索算法可以产生目标
图的相应拓扑排序表,利用拓扑排序表可以方便的解决很多相关的图论问题,如最大路径问题等。
形象的说,相当于在漆黑的夜里,你只能看到你站的位置和你前面的路,但你不知道每条路能够通向哪里。
搜索的任务就是,给出初始位置和目标位置,要求找到一条到达目标的路径。
深度优先就是,从初始点出发,不断向前走,如果碰到死路了,就往回走一步,尝试另一条路,知道发现了
目标位置。这种不撞南墙不回头的方法,即使成功也不一定找到一条号路,但好处是需要记住的位置较少。
下面转自:http://blog.csdn.net/todd911/article/details/9191481
深度优先遍历是连通图的一种遍历策略。其基本思想如下:
设x是当前被访问顶点,在对x做过访问标记后,选择一条从x出发的未检测过的边(x,y)。若发现顶点y已访问过,则重新选择另一条从x出发的未检测过的边,否则沿边(x,y)到达未曾访问过的y,对y访问并将其标记为已访问过;然后从y开始搜索,直到搜索完从y出发的所有路径,即访问完所有从y出发可达的顶点之后,才回溯到顶点x,并且再选择一条从x出发的未检测过的边。上述过程直至从x出发的所有边都已检测过为止。
例如下图中:
1.从0开始,首先找到0的关联顶点3
2.由3出发,找到1;由1出发,没有关联的顶点。
3.回到3,从3出发,找到2;由2出发,没有关联的顶点。
4.回到4,出4出发,找到1,因为1已经被访问过了,所以不访问。
所以最后顺序是0,3,1,2,4