动态规划:一种常用的算法设计思想,把一个复杂问题分解为相互重叠的子问题,先求解子问题并保存结果(记忆化或表格法),从而高效地得到原问题的最优解。常见于“最短路径、背包、序列比对、区间最优”等问题。(该术语在不同语境下也可简称为 DP。)
/daɪˈnæmɪk ˈproʊɡræmɪŋ/
Dynamic programming can solve the Fibonacci sequence efficiently.
动态规划可以高效地求解斐波那契数列。
By using dynamic programming, we computed the minimum edit distance between two strings while avoiding repeated work.
通过动态规划,我们在避免重复计算的同时求出了两个字符串的最小编辑距离。
“Dynamic programming”这一术语由美国数学家 Richard Bellman 在 20 世纪 50 年代提出。“dynamic(动态的)”在这里更多强调“分阶段决策、逐步推进”的过程;“programming”在当时的学术语境里常指“规划/方案制定(planning)”,不单是今天意义上的“写程序”。因此它更接近“动态规划法”的含义。