当前位置:   article > 正文

动态规划问题解题思路_动态规划模型常用的求解思路

动态规划模型常用的求解思路

动态规划问题的常用解题思路

!!! 还是要多练题的。不断地提升自己的逻辑能力

  • 确定状态:首先确定问题的状态,即问题的子问题是什么,以及如何表示子问题的状态。状态的选择要满足问题的最优子结构性质。

  • **定义状态转移方程:**根据问题的最优子结构性质,推导出状态之间的转移关系,即状态转移方程。状态转移方程描述了如何从一个状态转移到另一个状态,并且通常可以通过已解决的子问题的解来计算当前状态的解。

  • 初始化边界条件:确定最小规模子问题的解,即边界条件。在动态规划中,通常需要对边界条件进行初始化,以便后续的递推计算。

  • 递推计算:根据状态转移方程和边界条件,通过递推计算填充状态表格或数组。通常采用自底向上的方式,从最小规模的子问题开始逐步计算,直到求解原问题。

  • 解决原问题:最终得到状态表格或数组中所需要的结果,即原问题的解。根据问题的具体要求,可能需要从状态表格中提取某些值或找到特定位置的解

确定状态:首先确定问题的状态,即问题的子问题是什么,以及如何表示子问题的状态。状态的选择要满足问题的最优子结构性质。

  • 爬楼梯问题:
    假设有一个经典的动态规划问题,即「爬楼梯」问题。问题描述如下:假设你正在爬楼梯。每次你可以爬 1 个台阶或 2 个台阶。编写一个函数来计算你爬到楼梯顶部的方式总数
    这个问题的子问题就是:
    即问题的子问题可以定义为「在第 i 级台阶时,有多少种爬楼梯的方式
  • 背包问题
    子问题:当背包容量只有1时候,只有2时候…

定义状态转移方程:根据问题的最优子结构性质,推导出状态之间的转移关系,即状态转移方程。状态转移方程描述了如何从一个状态转移到另一个状态,并且通常可以通过已解决的子问题的解来计算当前状态的解。

  • 像梯子问题一样,像梯子问题一样
    f(3) = f(1) + f(2) = 3(三级台阶可以从第一级一次到达,也可以从第二级一次到达)

初始化边界条件:确定最小规模子问题的解,即边界条件。在动态规划中,通常需要对边界条件进行初始化,以便后续的递推计算。

  • 像梯子问题一样,最小的子规模就是
    f(1) = 1(一级台阶只有一种方式)
    f(2) = 2(两级台阶有两种方式:一次爬两级或者每次爬一级)

递推计算:根据状态转移方程和边界条件,通过递推计算填充状态表格或数组。通常采用自底向上的方式,从最小规模的子问题开始逐步计算,直到求解原问题。

  • 计算出最后的结果

解决原问题:最终得到状态表格或数组中所需要的结果,即原问题的解。根据问题的具体要求,可能需要从状态表格中提取某些值或找到特定位置的解。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/605832
推荐阅读
相关标签
  

闽ICP备14008679号