1、动态规划
动态规划是运筹学的一个分支,通常用来解决多阶段决策过程最优化问题。动态规划的基本想法就是将原问题转换为一系列相互联系的子问题,然后通过逐层地推来求得最后的解。
组成部分:
(以背包问题为例)
步骤一:确定状态
状态是指某一阶段问题的一个描述,它应该包含解决问题所需要的信息。在动态规划中,我们需要确定一个或多个状态变量,这些变量能够描述问题的每一个子问题的特征。
例如,在解决背包问题时,状态可以定义为dp[i][j]
,表示在前i
件物品中选择,使得总重量不超过j
的情况下,背包能够达到的最大价值。
步骤二:转移方程
转移方程(或称为状态转移方程)描述了状态之间如何转移,即如何从一个或多个已知状态推导出下一个状态。
继续以背包问题为例,转移方程可以是:
如果不选择第i
件物品,则dp[i][j] = dp[i-1][j]
如果选择第i
件物品ÿ