线性模型

【例题】在一个夜黑风高的晚上,有n(n <= 50)个小朋友在桥的这边,现在他们需要过桥,但是由于桥很窄,每次只允许不大于两人通过,他们只有一个手电筒,所以每次过桥的两个人需要把手电筒带回来,i号小朋友过桥的时间为T[i],两个人过桥的总时间为二者中时间长者。问所有小朋友过桥的总时间最短是多少。

思路1:贪心算法。总是跑得最快的人跑回来的话,那么他在每次别人过桥的时候一定得跟过去。但是,来看一组数据 四个人过桥花费的时间分别为 1 2 5 10,按照贪心算法答案是19,但是实际答案应该是17。

具体步骤是这样的:

第一步:1和2过去,花费时间2,然后1回来(花费时间1);

第二歩:3和4过去,花费时间10,然后2回来(花费时间2);

第三部:1和2过去,花费时间2,总耗时17。

所以贪心想法是不对的。

思路2:动态规划。

我们先将所有人按花费时间递增进行排序,假设前i个人过河花费的最少时间为opt[i]。

首先看初始状态:opt[0]=0,opt[1]=T[1], opt[2]=T[2]...

再看最后状态:最后只可能有两种情况

情况1:岸这边只剩一个人。最后渡河会是1和i一起渡河。

状态转移方程:opt[i] = opt[i-1]+T[1]+T[i]

其中opt[i-1]是i-1个人在对岸最少时间,所以此时手电筒必定在对岸;T[1]是送手电筒回来的时间;T[i]是最后渡河时间。

情况2:岸这边只剩两个人。最后渡河会是1和2一起渡河。

状态转移方程:opt[i] = opt[i-2]+T[1]+T[i]+T[2]+T[2]

其中opt[i-2]是i-2个人在对岸最少时间,所以此时手电筒必定在对岸;T[1]是送手电筒回来的时间;T[i]是最后渡河时间(i为目前为止最后一个,所以必定比另一个人慢),第一个T[2]是送手电筒回来的时间;第二个T[2]是2和1一起渡河的时间。

这两种最后情况其实对应的是:每个人可以选择与1一起渡河,也可以选择除1和2之外的一个人渡河。

那么总的状态转移方程取这两者的最小值

opt[i] = min{opt[i-1] + a[1] + a[i] , opt[i-2] + a[1] + a[i] + 2*a[2] }

区间模型

区间模型的状态表示一般为d[i][j],表示区间[i, j]上的最优解,然后通过状态转移计算出[i+1, j]或者[i, j+1]上的最优解,逐步扩大区间的范围,最终求得[1, len]的最优解。

【例题】给定一个长度为n(n <= 1000)的字符串A,求插入最少多少个字符使得它变成一个回文串。

转载于:https://www.cnblogs.com/qionglouyuyu/p/5126573.html

动态规划算法的应用模型相关推荐

  1. 『ACM-算法-动态规划』初识DP动态规划算法

    一.多阶段决策过程的最优化问题 在现实生活中,有类活 动的过程,由于 它的特殊性,可将过程分成若干个互相阶段.在它的每一阶段都需要作出决策,从而使整个过程达到最好的活动效果.当阶段决策的选取不是任意确 ...

  2. 动态规划算法实验报告_强化学习之动态规划算法

    如今的强化学习研究大体分为了两个研究学派:一个是以Sutton,Sliver等人为代表的value-based学派,他们主要从值函数近似角度入手去研究强化学习,这也是强化学习早期最初发展起来时沿用的路 ...

  3. 程序员的算法课(5)-动态规划算法

    前言 众所周知,递归算法时间复杂度很高为(2^n),而动态规划算法也能够解决此类问题,动态规划的算法的时间复杂度为(n^2).动态规划算法是以空间置换时间的解决方式. 一.什么是动态规划 动态规划(D ...

  4. 动态规划算法实验报告_搞懂这几点,动态规划算法就是那么简单

    动态规划(Dynamic programming,简称DP),是大家都觉得比较难以掌握的算法.为了应付面试,我们经常会背诵一下斐波那楔数列或者背包问题的源码,其实,只要理解了思想,掌握基本的模型,然后 ...

  5. 1. 通用基础算法(1.7动态规划算法/1.8模拟算法/1.9其他算法)

    7  动态规划算法 动态规划(Dynamic Programming)是求多阶段决策过程(Multistep Decision Process)最优化的一种数学方法,它将问题的整体按时间或空间的特征分 ...

  6. 算法--01背包问题(动态规划算法) 21-01-30

    问题简述: 给定n种物品和一个容量为C的背包,物品mi的重量为wi,价值为vi,如何分配背包空间使得装入背包的物品总价值最大? 动态规划: 本算法归属于解决动态规划问题,动态规划(Dynamic Pr ...

  7. 时间窗口算法用matlab,一种基于动态规划算法的时间窗口相关的参与者选择方法与流程...

    本发明涉及一种移动群智感知中时间窗口相关的参与者选择方法,特别地,涉及一种基于动态规划算法的时间窗口相关的参与者选择方法. 背景技术: 在移动群智感知网络中,智能设备中嵌入了麦克风.相机.温度传感器. ...

  8. 机器学习算法 10 —— HMM模型(马尔科夫链、前向后向算法、维特比算法解码、hmmlearn)

    文章目录 系列文章 隐马尔科夫模型 HMM 1 马尔科夫链 1.1 简介 1.2 经典举例 2 HMM简介 2.1 简单案例 2.2 案例进阶 问题二解决 问题一解决 问题三解决 3 HMM模型基础 ...

  9. 基础阶段(四)——MDP的动态规划算法

    提示:转载请注明出处,若文章无意侵犯到您的合法权益,请及时与作者联系. 基础阶段(四)--MDP的动态规划算法 前言 一.什么是动态规划? 二.策略评估和策略改进 1.策略评估(Policy Eval ...

最新文章

  1. 苹果自带的清理软件_清理苹果Mac系统垃圾用什么软件?
  2. 来自极客标签10款最新设计素材-系列七
  3. IISASP.NET 站点IP跳转到域名
  4. MySQL在DOS指令里面的使用以及增删改查的使用
  5. Windows下UEFI环境的搭建
  6. Oracle客户端配置
  7. [暴力]JZOJ 100036 随机
  8. VBA编程_ActiveSheet
  9. auto.js实现微信双向删除好友功能(检测僵尸粉)
  10. 计算机汇编语言教程pdf,汇编语言实践教程.pdf
  11. 路由器工作原理与静态路由配置
  12. U3D性能优化之MeshBaker(带光照)
  13. nuc7 android x86,OpenWrt X86 X64 NUC刷写教程
  14. CSCD.中国科学引文数据库核心库和引文库来源期刊列表(2007年-2008年)
  15. 电商数据库详细设计说明书
  16. JAVA里List集合中的对象根据对象的某个属性值降序或者升序排序java8
  17. Git上传项目提示Push rejected: Push to origin/dev was rejected解决办法
  18. 微软培训和认证的建议
  19. STM32F103学习笔记(十一)——USMART调试组件的使用
  20. Java下载安装及配置

热门文章

  1. 【Pytorch神经网络理论篇】 15 过拟合问题的优化技巧(二):Dropout()方法
  2. LeetCode 1822. 数组元素积的符号
  3. LeetCode 1653. 使字符串平衡的最少删除次数(DP)
  4. 天池 在线编程 Character deletion
  5. python实现两张图片横向和纵向拼接
  6. SparkStreaming基础
  7. 服务器上有涉密文件,涉密文件保密管理规定
  8. 一篇文章彻底搞懂“分布式事务”
  9. 最强京东Java面试题(共现场4面)
  10. ajax发送数据时的contentType