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

每天学一个算法--回溯算法(Backtracking)

📘 教案 12:回溯算法(Backtracking · 从暴力到剪枝)


1️⃣ 问题定义

回溯用于解决一类问题:

在所有可能方案中,寻找满足条件的解


典型问题

  • 排列 / 组合
  • 子集问题
  • N 皇后
  • 数独
  • 路径搜索

2️⃣ 核心思想


回溯 = 系统枚举 + 条件剪枝


本质拆解

  • 枚举所有可能(暴力)
  • 在过程中排除不合法路径(剪枝)

3️⃣ 回溯的结构模型(最重要)


树形结构(必须理解)

[] / | \ [1] [2] [3] / \ [1,2] [1,3]

👉 每一条路径 = 一个方案


4️⃣ 回溯模板(核心)


defbacktrack(path,choices):if满足条件:保存结果returnfor选择inchoices:做选择 backtrack(path,剩余选择)撤销选择

三个关键动作


1️⃣ 做选择

2️⃣ 递归

3️⃣ 撤销选择(回溯)


👉 这三步必须成对出现


5️⃣ 示例1:全排列(最经典)


问题:

[1,2,3]

求所有排列


解:

defbacktrack(path):iflen(path)==n:res.append(path[:])returnfornuminnums:ifnum 已使用:continuepath.append(num)标记使用 backtrack(path)撤销使用 path.pop()

6️⃣ 示例2:子集问题


问题:

[1,2,3]

求所有子集


关键区别

👉 每个节点都是答案


defbacktrack(start):res.append(path[:])foriinrange(start,n):path.append(nums[i])backtrack(i+1)path.pop()

7️⃣ 示例3:N 皇后(重要)


规则:

  • 每行一个皇后
  • 不能同列
  • 不能对角线

状态:

row, col, 对角线

本质:

👉 在棋盘上逐行尝试


8️⃣ 剪枝(关键优化)


什么是剪枝?

提前终止不可能的路径


示例:

当前和已经 > target

👉 不用继续


本质:

减少搜索空间


9️⃣ 回溯 vs 动态规划


项目回溯DP
思路枚举所有记忆优化
复杂度较低
是否剪枝

10️⃣ 时间复杂度


通常:

[O(指数级)][ O(指数级) ][O(指数级)]


👉 但剪枝后会下降


常见错误


❌ 错误1:忘记撤销选择

👉 状态污染


❌ 错误2:条件写错

👉 多算 / 少算


❌ 错误3:不会剪枝

👉 变成纯暴力


回溯问题分类


类型示例
排列全排列
组合组合数
子集子集
棋盘问题N皇后
路径问题迷宫

回溯的本质总结


回溯不是“乱试”,而是:

在树上进行有控制的搜索


一句话教学总结


回溯 =
👉 “尝试所有可能”
👉 + “不行就回退”

http://www.jsqmd.com/news/700161/

相关文章:

  • ComfyUI IPAdapter Plus:如何用一张图片重塑AI生成的艺术世界?
  • 抖音下载器完整指南:如何轻松下载无水印视频和直播内容
  • 从一次‘Failed to read artifact descriptor’报错,聊聊Maven依赖解析的完整链路与私服配置避坑
  • 医疗器械质量管理体系信息系统的详细设计
  • Realistic Vision V5.1写实人像生成实战:商业产品代言图AI制作全流程
  • 塑胶行业品牌曝光平台推荐 - 华旭传媒
  • 深度解析:如何用UE Viewer高效处理虚幻引擎1-4代游戏资源
  • Spring Cloud微服务架构详解:从服务注册到配置中心,阿里面试核心知识点
  • 国产时频测试仪器的破局之路:从“时间守门人”到产业赋能者
  • [T.4.5] 实验课/团队项目:团队代码管理准备-Ver.5-final-final-ffffffinal最终版真的绝对不再改了!!(2)_1
  • FormKit深度解析:基于Vue ue 3的声明式表单框架实战指南
  • 如何在Blender中轻松导入导出3MF文件:3D打印工作流终极指南
  • 终极Windows更新修复指南:5分钟解决系统更新故障的完整方案
  • 告别‘BCD找不到’:深入理解UEFI时代Windows引导文件藏在哪里(GPT磁盘篇)
  • 告别繁琐存档修改:一站式网页版暗黑破坏神2存档编辑器
  • 李雅普诺夫吸引子驱动AI训练新范式
  • 2026年3月回门宴场地推荐,一站式婚礼/订婚宴/宝宝宴/户外花园婚礼/婚宴/生日宴/公司年会,回门宴门店找哪家 - 品牌推荐师
  • Visual Syslog Server终极指南:Windows系统日志集中监控免费方案
  • 从零开始:PCL启动器终极指南,轻松管理你的Minecraft世界
  • 解决:wsl: 检测到 localhost 代理配置,但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理
  • 2026 年 DeepSeek 融资与 V4 发布:国产 AI 算力自主挑战与机遇并存
  • Llama-3.2V-11B-cot详细步骤:模型路径配置与自动加载机制解析
  • WinRAR CVE-2023-38831漏洞深度剖析:不只是双击压缩包那么简单
  • JVM调优实战:从垃圾回收到内存模型,一次性搞定JVM核心知识点
  • 51单片机实战:从直流电机调速到步进电机精确定位
  • MogFace人脸检测工具效果实测:cv_resnet101_face-detection_cvpr22papermogface极端姿态识别能力
  • 网站建设不只是「做个页面」:潍坊企业技术选型的五个关键判断
  • UIEffect终极指南:3分钟为Unity UI添加专业级视觉效果
  • 从0x000000D1蓝屏到系统稳定:深入剖析iaStorA.sys故障的根源与修复路径
  • D2RML终极指南:如何5分钟实现暗黑破坏神2重制版高效多开