动态规划
动态规划(Dynamic Programming):是一种在数学,计算机科学,经济学中使用的,通过将原问题分解为相对简单的字问题来求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题。
动态规划中的术语:
1.阶段:把问题分为几个相互联系的有顺序的几个环节,这些环节即称为阶段
2.状态:某一阶段的出发位置称为状态,通常在一个阶段中包含若干个状态
3.决策:从某阶段的一个状态演变到下一个阶段某状态的选择
4.策略:从开始到终点的整个过程中,由每段决策组成的决策序列称为策略
5.状态转移方程:前一阶段的终点就是后一阶段的起点,前一阶段的决策选择导致了后一阶段的状态,这种描述了由K阶段到K+1阶段状态的演变规律,称为状态转移方程。
使用动态规划的需要满足的条件:
① 最优化原理:任何问题如果失去了最优化原理的支持,就不能用动态规划的方法解决。我对最优化原理的理解:整个过程的最优策略中的每个决策在该过程中也是最优决策。
②无后效性:过去的决策只能通过当前状态影响未来的发展。我的理解:过去的决策不会造成状态种类的改变。
状态转移方程:f[i][v] = max{ f[i - 1][v], f[i - 1][ v -vol[i] ] +wei[i] }
-
解题步骤:
-
确定问题的子问题。
-
确定状态。
-
推出状态转移方程。
-
确定边界条件。
-
确定优化方法。
-
- 相关题目:
第一篇博客,欢迎大家批评指正。