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

【递归,搜索与回溯算法篇】- 名词解释

在这里插入图片描述

一. 递归

1. 什么是递归?

  • 定义: 函数自己调用自己的情况
  • 关键点:
    终止条件: 必须明确递归出口,避免无限递归
    子问题拆分: 问题需能分解成结构相同的更小的子问题
  • 缺点:
    栈溢出风险: 递归深度过大时可能引发栈溢出

2. 为什么会用到递归?

  • 二叉树的后序遍历
  • 快排
  • 归并

3. 如何理解递归?

  1. 递归展开的细节图
  2. 二叉树中的题目
  3. 宏观看待递归的过程
    ➀不要在意递归的细节展开图
    ➁把递归的函数当成一个黑盒
    ➂相信这个黑盒一定能完成任务

4. 如何写好一个递归?

  1. 先找到相同的子问题 -> 函数头的设计
  2. 只关心某一个子问题是如何解决的 -> 函数体的部分
  3. 注意递归函数的出口

手写笔记:
在这里插入图片描述
在这里插入图片描述

二.搜索 vs 深度优先遍历 vs深度优先搜索 vs 宽度优先遍历 vs 宽度优先搜索 vs 暴搜

  1. 深度优先遍历 vs 深度优先搜索 -> dfs
  2. 宽度优先遍历 vs 宽度优先搜索 -> bfs
    遍历是形式,目的是搜索

手写笔记:
在这里插入图片描述

3. 回溯与剪枝

回溯:

  1. 本质: 就是深搜
  • 在找某种情况的时候,发现这个情况行不通,然后返回到上一级的操作
  1. 核心思想:
  • 路径: 记录已做出的选择
  • 选择列表: 当前可用的选项
  • 结束条件: 满足条件时将路径加入结果

剪枝:

  1. 目标: 减少无效搜索,提前终止不可能到达解的路径
  2. 剪枝策略:
  • 可行性剪枝: 当前路径明显不满足约束时终止
  • 去重剪枝: 避免生成重复解
  • 最优解剪枝: 在求最优解时,若当前路径已劣于已知最优解,提前终止

相关文章:

  • 从X光片生成合成计算机断层扫描(CT)样成像的策略:一项范围审查|文献速递-医学影像人工智能进展
  • 【C++】sort函数的两种用法
  • 分布式容器技术是什么
  • 解决python配置文件类configparser.ConfigParser,插入、读取数据,自动转为小写的问题
  • AGI成立的条件
  • 算法及数据结构系列 - 回溯算法
  • 嵌入式芯片与系统设计竞赛,值得参加吗?如何选题?需要学什么?怎么准备?
  • QT开发(4)--各种方式实现HelloWorld
  • centos 7 搭建FTP user-list用户列表
  • LeetCode算法题(Go语言实现)_07
  • ensp 公司组网拓扑图
  • 如何给商品一键换色?图生生AI,告别繁琐修图
  • html5炫酷3D立体文字效果实现详解
  • 基于PySide6的CATIA自动化工具开发实战——空几何体批量清理系统
  • GITLAB部署安装教程
  • Kubernetes Init 容器:实现 Nginx 和 PHP 对 MySQL 的依赖检查
  • 9-类、结构体、指针、引用
  • 挖矿病毒应急响应处置手册
  • 嵌入式Linux——Framebuffer应用编程
  • Milvus学习整理
  • 多省市已开展现房销售试点,去年全国现房销售面积占比超30%
  • 高培勇:中国资本市场的发展应将预期因素全面纳入分析和监测体系
  • 2025年两岸关系研讨会在上海开幕
  • 印巴开始互袭军事目标,专家:冲突“螺旋式升级”后果或不可控
  • 伤员回归新援融入,海港逆转海牛重回争冠集团
  • 巴基斯坦首都及邻近城市听到巨大爆炸声