动态规划的基本思想可以概括为以下几点:
分解问题:
将待求解的问题分解成若干个相互关联的子问题。
解决子问题:
先求解这些子问题,通常采用自底向上的方式,即先解决较小的子问题,然后逐步构建出原问题的解。
最优子结构:
利用问题的最优子结构性质,即问题的最优解可以由其子问题的最优解组合而成。
避免重复计算:
对于重复出现的子问题,只求解一次,并将答案保存起来,以便在后续计算中直接引用,避免重复计算。
状态转移:
通过状态转移方程来描述子问题之间的关系,从而推导出原问题的解。
动态规划算法适用于具有重叠子问题和最优子结构特性的问题,通过存储已经解决的子问题的答案来减少计算量,提高效率