当前位置: 首页 > news >正文

打卡50天------图论

正式开启图论了,作为一个前端工程师,这个代码随想录真的刷新了我对于算法的认知,每天都在学习新东西。 别着急、放轻松、慢慢来。

一、图论理论基础

讲解了很多东西,但是在前端开发过程中很少用到吧,主要是学习算法的思路。

二、深搜理论基础

了解一下深搜的原理和过程,其实对于深搜和广搜我自己也写过一篇博客,是我个人的理解,但是没有卡尔总结的全面,如此看来真的是小巫见大巫了。

我自己的博客:我理解的深搜与广搜

我自己理解完深搜理论基础之后,在图上画了画,然后又尝试自己写代码给写出来了。

关键就两点:

  • 搜索方向,是认准一个方向搜,直到碰壁之后再换方向
  • 换方向是撤销原路径,改为节点链接的下一个路径,回溯的过程。

在回顾一下回溯法的代码框架:

void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {处理节点;backtracking(路径,选择列表); // 递归回溯,撤销处理结果}
}

深搜三部曲:

  1. 确认递归函数,参数
    void dfs(参数)
  2. 确认终止条件
    终止条件很重要,很多同学写dfs的时候,之所以容易死循环,栈溢出等等这些问题,都是因为终止条件没有想清楚。

    if (终止条件) {存放结果;return;
    }

    终止添加不仅是结束本层递归,同时也是我们收获结果的时候。
    另外,其实很多dfs写法,没有写终止条件,其实终止条件写在了, 下面dfs递归的逻辑里了,也就是不符合条件,直接不会向下递归。这里如果大家不理解的话,没关系,后面会有具体题目来讲解。

  3. 处理目前搜索节点出发的路径
    一般这里就是一个for循环的操作,去遍历 目前搜索节点 所能到的所有节点。

    for (选择:本节点所连接的其他节点) {处理节点;dfs(图,选择的节点); // 递归回溯,撤销处理结果
    }

三、 所有可达路径

leetcode题目链接:797.所有可能的路径

题目描述:

给你一个有 n 个节点的 有向无环图(DAG),请你找出所有从节点 0 到节点 n-1 的路径并输出(不要求按特定顺序

 graph[i] 是一个从节点 i 可以访问的所有节点的列表(即从节点 i 到节点 graph[i][j]存在一条有向边)。

有空给补上吧。

四、广搜理论基础

 我自己的博客:我理解的深搜与广搜

讲解的很全面,

所谓广搜(bfs)是一圈一圈的搜索过程,深搜(dfs)是一条路跑到黑然后再回溯。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【给女朋友讲C++】C++的调试之gdb
  • python socket 发生UDP 和 UDPServer接受UDP实例
  • 快速绘制思维导图:高效思考与信息整理的利器
  • LeetCode 热题 100 回顾
  • Qt详解QUrl
  • MS sqlserver备份软件 SQLBackupAndFTP
  • 开源模型应用落地-LlamaIndex学习之旅-LLMs-集成OpenAI(一)
  • Pictory AI——博客、文章等内容转换为视频,自动适配动态画面和字幕
  • 【STM32 Blue Pill编程】-UAR数据接收与发送(中断模式)
  • 力扣52-最大子序和(java详细题解)
  • sql查询之“列命名问题“
  • Qdrant官方快速入门和教程简化版
  • RocketMQ第5集
  • Flutter ListView滑动
  • noexcept关键字
  • ES6指北【2】—— 箭头函数
  • 【347天】每日项目总结系列085(2018.01.18)
  • Babel配置的不完全指南
  • JavaScript标准库系列——Math对象和Date对象(二)
  • JAVA并发编程--1.基础概念
  • Leetcode 27 Remove Element
  • Mybatis初体验
  • MYSQL 的 IF 函数
  • 和 || 运算
  • 回顾2016
  • 京东美团研发面经
  • 聚簇索引和非聚簇索引
  • 聊聊redis的数据结构的应用
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 写代码的正确姿势
  • 学习笔记TF060:图像语音结合,看图说话
  • 主流的CSS水平和垂直居中技术大全
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • ​数据结构之初始二叉树(3)
  • #DBA杂记1
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (6)设计一个TimeMap
  • (C++)八皇后问题
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (六)软件测试分工
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)EOS中账户、钱包和密钥的关系
  • (转)Unity3DUnity3D在android下调试
  • ./configure,make,make install的作用
  • .NET : 在VS2008中计算代码度量值
  • .net core 控制台应用程序读取配置文件app.config
  • .net framework4与其client profile版本的区别
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .pyc文件是什么?
  • ??在JSP中,java和JavaScript如何交互?
  • [20181219]script使用小技巧.txt
  • [Android Pro] android 混淆文件project.properties和proguard-project.txt