动态规划入门:无后效性原理解析

需积分: 9 0 下载量 197 浏览量 更新于2024-08-24 收藏 1.5MB PPT 举报
"无后效性-动态规划1-张惜今" 动态规划是一种解决最优化问题的算法,它通过将复杂的问题分解成一系列更小的子问题,然后逐一解决这些子问题,最终得到原问题的最优解。无后效性是动态规划的核心特性,意味着在动态规划过程中,当前的决策只会影响到后续的状态,而不会影响已经做出的决策或之前的状态。这种特性使得我们可以在解决每个子问题时,存储和利用之前决策的结果,避免重复计算。 以博丽灵梦修复灵符的问题为例,这是一个典型的动态规划应用。灵符是一个数字三角形,灵梦需要找到从顶部到底部,经过不同路径所能获得的最大修复值。最初的想法可能是穷举所有可能的路径,但这会导致大量的重复计算,因为对于同一个点,它的最大和会被反复计算。这就是动态规划中所说的“天然呆”属性,即算法没有记忆性,无法有效利用过去的信息。 为了解决这个问题,动态规划采取了“记忆化”的策略。在每一层,我们计算到达该位置的最大修复值,并保存下来。当计算下一层时,我们只需要查看上一层的结果,与当前层的数值相加,再与当前层已有的最大值进行比较,选取较大者作为新的最大值。这样,每个点的最优值只计算一次,大大减少了计算量。 在这个特定问题中,每层的计算次数可以用等差数列求和公式来表示,例如在n=4的情况下,计算次数为(1+4)*4/2-1=9,总计算次数为18次,相比于最初的指数级增长,这种方法的计算复杂度是线性的,随着n的增长,效率明显提高。 动态规划的定义不仅限于这个例子,它是一门运筹学的分支,专注于解决多阶段决策过程的优化问题。动态规划方法将问题划分为多个阶段,每个阶段对应一个子问题,而且这些子问题必须满足无后效性,即当前阶段的决策不会影响过去的决策。此外,动态规划还要求问题的解决方案能够通过组合子问题的最优解来获得,这被称为“最优子结构”。 动态规划的优点在于其高效性,能够有效地处理大规模问题,避免了指数级的计算复杂度。然而,它也有局限性,不是所有的问题都可以自然地划分阶段,或者满足无后效性。在实际应用中,设计正确的状态转移方程和有效的状态空间存储是动态规划的关键挑战。 无后效性是动态规划的基础,它确保了算法能够在解决问题时有效地利用过去的信息,避免重复计算,从而提高效率。动态规划是一种强大的工具,尤其适用于那些可以通过分解和重用子问题解答的最优化问题。