动态规划与贝尔曼方程 dynamic programming principle and bellman equation

本文介绍了动态规划的概念,强调其在处理具有重叠子问题和最优子结构问题中的优势。通过实例如背包问题,解释了动态规划的四个基本步骤:发现递归规律、写出状态转移方程、设定边界条件和存储子问题解。同时提到了贝尔曼方程作为补充说明。

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

动态规划

什么是动态规划

通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。

动态规划原理

动态规划常常适用于有重叠子问题最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法。

重叠子问题指的是在求解一个大问题的时候需要重复求解多个一样的子问题。

最优子结构可以结合无后效性进行理解,指的是局部最优解能影响全局最优解,只要所有局部是最优解,全局就一定是最优解。

动态规划背后的基本思想非常简单。大致上,若要解一个给定问题,我们需要解其不同部分(即子问题),再根据子问题的解以得出原问题的解。

其中子问题的解可以被保存下来供下一次使用。例如我们有一个递归方程 f ( n ) = f ( n − 1 ) + f ( n − 2 )   . f(n)=f(n-1)+f(n-2)\,. f(n)=f(n1)+f(n2).当我们计算 f ( n − 1 ) f(n-1) f(n1)的时候 f ( n − 2 ) f(n-2) f(n2)也会被用到,因此如果我们在计算 f ( n − 1 ) f(n-1) f(n1)的时候将 f ( n − 2 ) f(n-2) f(n2)保存下来,那么在计算 f ( n ) f(n) f(n)的时候就不需要再计算 f ( n − 2 ) f(n-2) f(n2)

动态规划基本步骤包括四步:
1、穷举问题的解,目的是发现问题递归求解的规律,找到关键的状态转移方程。
2、写状态转移方程,例如上面提到的 f ( n ) = f ( n − 1 ) + f ( n − 2 )   . f(n)=f(n-1)+f(n-2)\,. f(n)=f(n1)+f(n2).
3、确定边界条件,也就是确定状态转移方程的初始条件,让状态转移方程可以跑起来的初始解, f ( 1 ) f(1) f(1) and f ( 2 ) f(2) f(2)
4、构建表格或者map存储重复子问题的解。

动态规划问题

例如背包问题,最优子序列问题等等。

贝尔曼方程

supplement in free time

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值