学习动态规划DP(一)——DAG模型

之前初学了一点关于动态规划的知识,但没有系统的学习,最近在空闲时间根据紫书(算法竞赛入门经典)开始了比较有计划的学习,先写下这篇博客,作为笔记。

一、我对动态规划的看法。
动态规划,即是把原问题划分为各个规模更小的问题去解决,原问题的最优解包括了各个子问题的最优解(感觉本质上是分治法)。所以动态规划用于求解最优值,解题过程中最重要的是确定好状态转换方程。对于动态规划的学习,我觉得需要知道的基础概念不多,就是了解了动态规划的想法,然后就是做题训练了,从题目中学习DP才比较有效率。

二、一般的解题思路、步骤。
1、定义状态:一个状态遵循什么规则需要我们自己定义,我们可以通过定义不同的规则来定义不同的状态,但要写出每一个状态的转移方程的难度不同,所以需要我们有目的的筛选,这就需要从题目训练中学习。通过量的累积达到质的变化。
2、判断一个状态有几种可能的决策:在遵循自己对状态所定义的规则的条件下,确保对条件的列举不存在缺漏的情况下,列举出某一状态下可能出现的不同决策,即各种可能的状态转变方向。
3、根据不同的决策列出对应的状态转移方程:状态转移方程需要确保可以得到最优的结果并且对各种可能出现的情形没有漏举的情况。

三、如何定义状态
做了一些题,我发现对状态的定义,我们都是用数组来表示,可能是一维数组,也可能是多维数组。数组的维度根据不同的题目要求而定,有时可以有多解,就是可以用不同维度的数组来解题,但这种情况下一般多维的解题数组可以降维到最简。下面还是通过一些基础、经典的例题来说明。

四、DP例题(一下两题都是紫书的,暂时找不到具体来源)
DAG模型&#

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值