动态规划-1 概述

动态规划概述

1 使用动态规划的情况

动态规划问题通常用来解决最优化问题,以得到最大或最小值。事实上,只要有最优子结构就可以使用动态规划。但是一般而言,动态规划时间复杂度较高,所以一般而言,只有在问题还具有子问题重叠的性质时,动态规划才有一定优势。

总而言之,当我们发现问题具有最优子结构子问题重叠的时候,我们就可以尝试用动态规划的方式来解决问题。

2 具体步骤

一般有如下几个步骤:

  1. 定义最优子结构。
  2. 定义状态。
  3. 定义状态转移方程。

其中,要得到状态转移方程,我们需要分析原问题和子问题的关系。又因为有多种选择,所以我们需要从这些选择当中取最优值。

最后我们还需要确定边界条件。

通常而言,我们自底向上地使用动态规划。

你可能感兴趣的:(算法设计,动态规划,算法)