动态规划思路总结(初稿)

初步总结了一下,有以下五个步骤。

在这里插入图片描述

1、思考状态

状态先尝试题目问什么,就把什么设置为状态。如果不行,就从状态转移方程去思考,状态怎样定义,状态转移方程会容易得出。

2、状态转移方程(核心、难点)

技巧是分类讨论。即“对状态空间进行分类”,“大类”可以又“小类”转化而来。

状态转移方程是非常重要的,是动态规划的核心,也是难点,起到承上启下的作用。

除了掌握经典的动态规划问题以外,还需要多做题。

3、思考初始化

初始化是非常重要的,俗话说,一步错,步步错,一开始就得弄对哦。

角度 1:直接从状态的语义出发。

角度 2:如果状态的语义不好思考,就考虑“状态转移方程”的边界需要什么样初始化的条件。

角度 3:从“状态转移方程”方程的下标看是否需要多设置一行、一列表示“哨兵”,这样可以避免一些边界的讨论,使得代码变得比较长。

4、思考输出

这一步比较简单。有些时候是最后一个状态,有些时候可能会绕一个弯子。

5、思考状态压缩

这一步非必需,在状态特别多的时候,可能需要。“状态压缩”会使得代码难于比那些、难于理解,初学的时候可以不一步到位。先把代码写正确是很重要的。

状态压缩在有一种情况下是很有必要的,那就是状态空间非常庞大的时候(处理海量数据),此时空间不够用,就必须状态压缩。如果状态空间很小,有时也不必压缩。

发布了442 篇原创文章 · 获赞 330 · 访问量 123万+

猜你喜欢

转载自blog.csdn.net/lw_power/article/details/103801243
今日推荐