动态规划解析

参考《算法导论》动态规划章节。
判断一个问题能否用动态规划解决,要求问题满足两个条件:
1)存在最优子结构,即一个问题可以通过n(n>=1)个选择划分成n或n+1个同类子问题+选择代价;
2)存在重叠子问题,不同的问题会重复调用同一个子问题;

动态规划解决问题的步骤:
1)刻画一个最优解的结构特征,即寻找一个最优子结构;
2)一个递归求解方案;
3)计算最优解的值,两种方法:1.自底向上,寻找最优结构中递增的性质;2.自顶向下,使用类似深度优先搜索的方法,附加备忘的递归操作;
4)利用计算出的信息构造最优解,此时一般是构造一个辅助表记录每个子问题的最优解做的选择

自底向上,构造循环的算法,根据最优子结构所构造的递归解法的不同有不同的循环结构。

  • 在“钢条切割”的问题中,最优子结构是1个选择1个子问题,直接从问题长度开始主序递增;
    钢条切割的递归解法
  • 在“矩阵链乘法”问题中,最优子结构是1个选择2个子问题,子问题的长度在减小,则从问题的长度开始主序递增;

    矩阵链乘的递归解法
  • 在“最长公共子序列”问题中,递归解法中c[i,j]只与他的前一行和当前行有关,则可用i为主序递增循环
    最长公共子序列的递归解法
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值