码迷,mamicode.com
首页 > 编程语言 > 详细

DFS算法(——模板习题与总结)

时间:2017-10-28 12:54:17      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:全排列   需要   复杂度   比赛   本质   难度   for   .com   枚举   

  首先,需要说明的是搜索算法本质上也是枚举的一种,时间复杂度还是很高的,遇到问题(特别是有水平的比赛上),不要优先使用搜索算法。

  这里总结一下DFS算法:

  1、从图中某个顶点出发,访问v。

  2、找出刚访问过的顶点的第一个未被访问的邻接点,访问该顶点。以该顶点为新顶点,重复此步骤,直到刚访问的顶点没有未被访问过的邻接点为止。

  3、返回前一个访问过的且仍有未被访问过的邻接点的顶点,找出该顶点的下一个未被访问的邻接点,访问该顶点。

  4,重复2、3,直到图中所有顶点都被访问过,搜索结束。

  理解深度优先搜索的关键在于解决“当下该如何做”。至于“下一步如何做”则与“当下该如何做”是一样的。例如全排列,DFS函数主要解决的问题是当你走到第step个盒子的时候怎么办,通常方法是将每一种可能都

尝试一遍(for循环实现),当前这一步解决之后便进入下一步DFS(step+1);

  下面先练习一下放牌的DFS模板习题:http://www.cnblogs.com/wenzhixin/p/7412323.html

  接下来再练习一下使用DFS算法解决对图中联通区域的着色问题:http://www.cnblogs.com/wenzhixin/p/7271071.html

  最后看一下DFS搜索的典型题目:http://www.cnblogs.com/wenzhixin/p/7268017.html

  最后总结一下,其实搜索的题目,在一些有水平的比赛里都是有难度的,往往使用动态规划或者找规律,不到万不得已还是不要使用这种暴力的搜索(高效剪枝除外)。

  

 

DFS算法(——模板习题与总结)

标签:全排列   需要   复杂度   比赛   本质   难度   for   .com   枚举   

原文地址:http://www.cnblogs.com/wenzhixin/p/7730743.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!