资源经验分享DFS---深度优先搜索

DFS---深度优先搜索

2019-11-05 | |  77 |   0

原标题:DFS---深度优先搜索

原文来自:CSDN      原文链接:https://blog.csdn.net/qq_41280600/article/details/102869042


一、介绍

深度优先搜索算法(英语:Depth-First-Search,简称DFS)是一种用于遍历或搜索树或图的算法。 沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所在边都己被探寻过或者在搜寻时结点不满足条件,搜索将回溯到发现节点v的那条边的起始节点。整个进程反复进行直到所有节点都被访问为止。属于盲目搜索,最糟糕的情况算法时间复杂度为O(!n)。
——————————————————————————————————————————————————————

二、核心内容

  • 访问过程: 每一个节点入栈,当无下一个节点访问时出栈。用一个vis【】数组记录那些节点已经访问过。

  • 根节点1开始访问,1节点入栈。

    1.png

  • 从1节点出发访问它能够访问的点,访问到2节点,2节点入栈。
    2.png

  • 从2节点出发继续往下访问。2访问3节点,3节点入栈。又从3出发,3访问4, 4访问5。

    3.png

  • 最后5节点没有访问的点,进行出栈。
    4.png

  • 然后回溯到4节点, 继续从4节点出发直到遍历完全部节点
    5.png

    • 最后节点全部出栈,完成DFS。
      6.png

  • 基本模板:

    int check(参数) {    if(满足条件)        return 1;    return 0;} void dfs(int step) {
           判断边界 {
               相应操作       }
           尝试每一种可能 {
                  满足check条件
                  标记
                  继续下一步dfs(step+1)
                  恢复初始状态(回溯的时候要用到)       }}

三、全排列

四、n皇后

五、迷宫

免责声明:本文来自互联网新闻客户端自媒体,不代表本网的观点和立场。

合作及投稿邮箱:E-mail:editor@tusaishared.com

上一篇:python3生成二维码中间带logo,有底图,可自定义文字

下一篇:Python OpenCV+TensorFlow2.0 人脸识别入门

用户评价
全部评价

热门资源

  • Python 爬虫(二)...

    所谓爬虫就是模拟客户端发送网络请求,获取网络响...

  • TensorFlow从1到2...

    原文第四篇中,我们介绍了官方的入门案例MNIST,功...

  • TensorFlow从1到2...

    “回归”这个词,既是Regression算法的名称,也代表...

  • 机器学习中的熵、...

    熵 (entropy) 这一词最初来源于热力学。1948年,克...

  • TensorFlow2.0(10...

    前面的博客中我们说过,在加载数据和预处理数据时...