动态规划是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。1
动态规划的名称来源于美国数学家贝尔曼(Richard Bellman),他在1950年代研究多阶段决策过程时,为了避免国防部长对“研究”这个词的偏见,而选择了一个听起来不那么像数学研究的词来形容他的方法。2
贝尔曼解释说,他选择了“programming”这个词,是因为它意味着“计划”或“安排”,而不是编写计算机程序。他选择了“dynamic”这个词,是因为它暗示了时间的变化和多阶段的特征,也因为它听起来很酷和时髦。3
因此,“dynamic programming”这个词并没有直接反映出它的本质和含义,而是一个比较模糊和随意的名称。4
不过,我们可以从以下几个方面来理解动态规划的含义:
- 动态:动态规划是一种自底向上或自顶向下的方法,它根据子问题之间的关系,逐步推导出原问题的解。在这个过程中,动态规划会记录下每个子问题的解,以便后续使用,从而避免重复计算。这种记录下子问题解的过程,可以看作是一种状态的变化或更新,也就是动态的含义。5
- 规划:规划是一种寻找最优解或最优策略的过程,它通常涉及到多个阶段或多个决策。动态规划适用于具有最优子结构性质的问题,即原问题的最优解可以由子问题的最优解组合而成。因此,动态规划可以看作是一种按照一定顺序或方案,将子问题的最优解组合成原问题的最优解的过程,也就是规划的含义。
以上就是我对动态规划为什么叫动态规划的一些解释,希望对您有所帮助。如果您想了解更多相关内容,
可以参考以下链接:
3: Richard Bellman on the Birth of Dynamic Programming
5: 对动态规划的理解还是差那么一点?这一篇帮你安排的明明白白 -