数学建模笔记——动态规划

动态规划

1. 模型原理

动态规划是运筹学的一个分支,通常用来解决多阶段决策过程最优化问题。动态规划的基本想法就是将原问题转换为一系列相互联系的子问题,然后通过逐层地推来求得最后的解。目前,动态规划常常出现在各类计算机算法竞赛或者程序员笔试面试中,在数学建模中出现的相对较少,但这个算法的思想在生活中非常实用,会对我们解决实际问题的思维方式有一定启发。

动态规划组成部分:

  1. 确定状态:解动态规划的时候需要开一个数组,数组的每个元素需要明确代表什么,类似于确定数学题中X、Y的含义
  2. 转移方程:把状态表达成方程
  3. 初始条件和边界情况
  4. 计算顺序

2. 典型例题

2.1 例1 凑硬币

你有三种硬币,分别面值2元、5元和7元,每种硬币都有足够多,买一本书需要27元,如何用最少的硬币组合起来正好付清,不需要对方找钱

  1. 确定状态

    • 最后一步:

      虽然我们不知道最优策略是什么,但是最优策略肯定是有k校硬币, a 1 , a 2 , . . . . . . a k a_1,a_2,......a_k a1,a2,......ak加起来面值为27,所以一定存在有最后一枚硬币: a k a_k ak,除了这枚硬币,前面的面值加起来是 27 − a k 27-a_k 27ak,两个关键点:

      • 我们不关心前面的 k − 1 k-1 k1枚硬币是怎么拼出 27 − a k 27-a_k 27ak的(可能有很多种拼法),而且我们现在甚至还不知道 a k a_k ak k k k是多少,但我们可以确定前面的硬币拼出了 27 − a k 27-a_k 27ak
      • 因为是最优策略,所以拼出 27 − a k 27-a_k 27ak的硬币数一定要最少,否则就不是最优策略
    • 子问题:

      • 最少可以用多少枚硬币拼出 27 − a k 27-a_k 27ak
      • 原问题是最少可以用多少枚硬币可以拼出27
      • 我们将原问题可以转化为一个规模更小的子问题: 27 − a k 27-a_k 27
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值