码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 算法笔记-第十章-图的遍历(未处理完-11.22日)


    算法笔记-第十章-图的遍历

    • 图遍历的知识点一
      • 关于深度和广度优先遍历的基础知识 :
      • 大佬讲解一
      • 大佬讲解二
    • 图遍历知识二
      • 连通分量
      • 实现DFS的模板思路
      • 邻接矩阵版本
      • 邻接表版本
    • 无向图的连通块

    图遍历的知识点一

    关于深度和广度优先遍历的基础知识 :

    大佬讲解

    大佬讲解一

    大佬讲解二

    图遍历知识二

    连通分量

    在这里插入图片描述

    算法笔记-352

    DFS的具体实现
    两个概念:
    连通分量,强连通分量(有向路径)

    实现DFS的模板思路

    DFS(u)//访问顶点u
    {
        vis[u] = true;
        for (从u出发能到达的所有顶点)
        {
            if vis[v] == false//如果v未被访问  
            {
                DFS(v);//递归访问v  
            }
        }
        DFStrave(G)//遍历图G  
        {
            for (G的所有顶点u)//对G的所有顶点u  
            {
                if (vis[u] == false)//如果u未被访问  
                    DFS(u);//访问u所在的连通块  
            }
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    邻接矩阵版本

    //邻接矩阵版本
    const int N = 1001, INF = 1000001;
    int n, G[N][N];
    bool vis[N] = { false };
    void DFS(int u, int depth)
    {
        vis[u] = true;
        //需要对u进行一些操作,从u出发
        //能到达的 分支进行枚举
        for (int v = 0; v < n; v++)
        {
            if (vis[v] == false && G[u][v] != INF)
            {
                DFS(v, depth + 1);  
            }
        }
    
    }
    void DFStrave()//遍历图  
    {
        for (int u = 0; u < N; u++)  
        {
            if (vis[u] == false)  
            {
                DFS(u, 1);  
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    邻接表版本

    //邻接表版
    vector<int> adj[N];
    int n;
    bool vis[N] = { false };
    void DFS(int u, int depth)
    {
        vis[u] = true;
        for (int i = 0; i < adj[u].size(); i++)//从u出发可以到达的所有顶点
        {
            int v = adj[u][i];
            if (vis[v] == false)
            {
                DFS(v, depth + 1);  
            }
        }
    
    }
    void DFStrave()//遍历图  
    {
        for (int u = 0; u < N; u++)  
        {
            if (vis[u] == false)  
            {
                DFS(u, 1);  
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    无向图的连通块

    在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    LeetCode——字符串(Java)
    PyTorch:张量与矩阵
    (实践)一文搞定synchronized锁升级过程
    动态规划算法(1)
    3d稀疏卷积——spconv源码剖析(四)
    QSPI介绍
    软锁加密的机密性和完整性
    java基础 日期工具类
    Springboot整合Redis集群实战详解
    027-从零搭建微服务-搜索服务(一)
  • 原文地址:https://blog.csdn.net/yihoujian_2003/article/details/134538049
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号