关于动态规划和回溯的一些理解

本文探讨了动态规划和回溯两种算法。动态规划通过分解问题并利用子问题的解来避免重复计算,实现最优解。回溯法则通过深度优先搜索策略遍历解空间,寻找所有可能的解或最优解。动态规划的关键在于定义状态和状态转移方程,而回溯则涉及剪枝策略以优化搜索过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、动态规划

1、什么是动态规划:

将待解决的问题分为若干个子问题,每个子问题有公共子子问题,递归的解决每个子问题,一步一步求得总问题的答案。—— 动态规划将每个子问题只求解一次,保存在一个表格(数组)里面,而不需要每个子子问题都求解一遍,通过已知解求未知解,直到已知解的问题规模达到题目,避免许多无用工作。
(同分冶法一起理解,分冶法:将问题划分为互不相交的子问题,递归地求解子问题,然后将子问题组合起来就是原问题的解。这样一来,子问题如果有公共子问题,分冶法会做很多无用工作)
2、怎么解决动态规划的问题:
首相定义问题状态(最优解的结构特征),通常是一个动态数组;
然后找到边界;最后找到状态转移方程。
设计状态的思路:由于动态规划是将问题划分为一个个具有相同解结构的子问题,在定义状态时需要注意这一点,将子问题之间的联系定义的简单。因此,状态的定义应该是无后效性问题(已经解决的问题不受后续阶段的影响)。【相对来说的有后效性指,对子问题的描述还有不确定的地方】

经典动态规划问题定义:力扣53,求最大子序和。
建议看看weiwei大神的解析

动态规划写的很好的文章:动态规划

二、回溯

1、什么是回溯:
核心思想就是枚举每一种情况,然后进行比较,最终得到最优解。把问题的解空间转化成了图或者树的结构表示,然后使用深度优先搜索策略进行遍历,遍历的过程中记录和寻找所

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值