动态规划算法解题思路

本文通过一道具体的动态规划问题,阐述了如何分析并构建动态规划算法的解题步骤。从后往前思考,确定每一步的最优解并进行递推,是解决此类问题的关键。通过示例介绍了状态转移方程的形成过程,并总结了动态规划算法的一般思路,包括问题分解、状态定义、初始状态值的确定和状态转移方程的建立。
摘要由CSDN通过智能技术生成

在做动态规划类题目时最大的感觉就是能够分析出这道题目需要用动态规划算法来解,却没有办法构建出解题步骤,看到别人的分析时候又感觉代码很简单但是自己却想不出。
其实这还是没有理解到动态规划算法的基本思想。

这里我们通过一道例题来进行分析
在这里插入图片描述
在这里插入图片描述由于相邻房屋不能偷,如果我们从前往后思考当我们偷第一家那么我们就不能偷第二家,如果我们偷第二家我们就不能偷第三家…这时发现我们每走一步问题都为发生改变。
此时我们就应该换个角度思考从后往前看
假如我们现在有5家房屋
当我们选择偷第五家的时候,那么最大金额 = 第五家金额 + 前三家偷窃的最优解。
当我们不偷第五家的时候,那么最大金额 = 前四家偷窃的最优解。

这时候我们就能明白:如果只有一种情况时,最佳的选择应该怎么做.然后根据这个最佳选择往前一步推导,得到前一步的最佳选择。
这道题最主要的部分就是要分析出每一步的最优解然后往后递推。

我们来结合示例2进行分析:
输入为:[2,7,9,3,1]
我们使用一个dp[]数组储存我们没阶段的最优解

(1)假设起始状态下没有房屋时最优解为:0
dp[0]=0(可以看作0房屋时候的最优解)
(2)如果只存在第一家的时候那么最优解为:2
dp[1]=

  • 9
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
多维动态规划(MDP)是一种在多维状态空间中求解最优策略的算法。下面是解题思路的一般步骤: 1. 定义状态和动作:首先,需要明确问题的状态和可选的动作。将问题抽象成一个多维状态空间,并确定每个状态下可执行的动作。 2. 定义价值函数:为了评估每个状态的优劣,需要定义一个价值函数来衡量状态的价值。价值函数可以是累积奖励、期望回报等。 3. 定义转移函数:转移函数描述了状态之间的转换关系,即在执行某个动作后,当前状态如何转移到下一个状态。转移函数可以是确定性的或概率性的。 4. 构建动态规划表格:根据问题的状态空间和动作空间,构建一个多维表格。每个单元格代表一个状态,并记录该状态下执行不同动作所得到的价值。 5. 递归求解最优策略:从最后一个状态开始,根据动态规划的原理递归地计算每个状态的最优价值,并记录最优动作。通过向前逐步计算,可以得到整个状态空间下的最优策略。 6. 优化算法:对于复杂问题,可以采用一些优化技巧来减少计算量,如值迭代、策略迭代等。 需要注意的是,多维动态规划算法的实现可能会比较复杂,涉及到状态空间的遍历和动作选择等问题。因此,了解问题的特点和算法的原理非常重要。 希望这个解题思路能对你有所帮助!如果还有其他问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值