zoukankan      html  css  js  c++  java
  • DFS算法(——模板习题与总结)

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

      这里总结一下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

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

      

  • 相关阅读:
    ios version和build
    协议
    masonry
    加密
    coredata
    随机附魔笔记
    Mac下搭建AzerothCore遇到的坑
    cocospods 私服搭建
    网络营销工具
    WKWebView不能重定向打开新界面,解决办法
  • 原文地址:https://www.cnblogs.com/wenzhixin/p/7730743.html
Copyright © 2011-2022 走看看