定义:把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系,逐个求解,创立了解决这类过程优化问题的新方法——动态规划。

动态规划一般可分为线性动规,区域动规,树形动规,背包动规四类。

思想:动态规划思想设计的算法从整体上来看基本都是按照得出的递推关系式进行递推,这种递推相对于计算机来说,只要设计得当,效率往往是比较高的,这样在时间上溢出的可能性不大,而相反地,动态规划需要很大的空间以存储中间产生的结果,这样可以使包含同一个子问题的所有问题共用一个子问题解,从而体现动态规划的优越性,但这是以牺牲空间为代价的,为了有效地访问已有结果,数据也不易压缩存储,因而空间矛盾是比较突出的。另一方面,动态规划的高时效性往往要通过大的测试数据体现出来(以与搜索作比较),因而,对于大规模的问题如何在基本不影响运行速度的条件下,解决空间溢出的问题,是动态规划解决问题时一个普遍会遇到的问题。

方法:一个思考方向是尽可能少占用空间。如从结点的数据结构上考虑,仅仅存储必不可少的内容,以及数据存储范围上精打细算(按位存储、压缩存储等)。当然这要因问题而异,进行分析。另外,在实现动态规划时,一个我们经常采用的方法是用一个与结点数一样多的数组来存储每一步的决策,这对于倒推求得一种实现最优解的方法是十分方便的,而且处理速度也有一些提高。但是在内存空间紧张的情况下,我们就应该抓住问题的主要矛盾。省去这个存储决策的数组,而改成在从最优解逐级倒推时,再计算一次,选择某个可能达到这个值的上一阶段的状态,直到推出结果为止。这样做,在程序编写上比上一种做法稍微多花一点时间,运行的时效也可能会有一些(但往往很小)的下降,但却换来了很多的空间。因而这种思想在处理某些问题时,是很有意义的。

转载于:https://www.cnblogs.com/A-FM/p/4998136.html

-------------初识----------动态规划。--------------------------------------------相关推荐

  1. 初识动态规划(一)简单入门动态规划与上手操作

    dp动态规划 一.认识动态规划 前言:近期我在慢慢刷动态规划的题,虽然还是入门阶段,但还是准备记录我动态规划前期是如何刷题过程 先根据一个例题来引入动态规划--换零钱 提出问题:要求使用1,5,11的 ...

  2. 一看就懂的动态规划入门教程

    今天在网上看到一个讲动态规划的文章,是以01背包为例的,这文章和书上的讲解非常不一样,令我眼前一亮,于是转载一下下--- (说明一下,本人非常痛恨教材公式定理漫天飞,实际的讲解却讲得非常枯涩难懂,这种 ...

  3. 动态规划专题 01背包问题详解【转】

    对于动态规划,每个刚接触的人都需要一段时间来理解,特别是第一次接触的时候总是想不通为什么这种方法可行,这篇文章就是为了帮助大家理解动态规划,并通过讲解基本的01背包问题来引导读者如何去思考动态规划.本 ...

  4. 【数据结构与算法】【算法思想】动态规划

    贪心算法 回溯算法 分治算法 动态规划 贪心:一条路走到黑,就一次机会,只能哪边看着顺眼走哪边 回溯:一条路走到黑,无数次重来的机会,还怕我走不出来 (Snapshot View) 动态规划:拥有上帝 ...

  5. 【动态规划模型】金矿模型理解动态规划!(精彩的故事)

    对于动态规划,每个刚接触的人都需要一段时间来理解,特别是第一次接触的时候总是想不通为什么这种方法可行,这篇文章就是为了帮助大家理解动态规划,并通过讲解基本的01背包问题来引导读者如何去思考动态规划.本 ...

  6. 【转载】通过金矿模型介绍动态规划 (动态规划入门)

    先附上原文地址:http://www.cnblogs.com/sdjl/articles/1274312.html 通过金矿模型介绍动态规划 对于动态规划,每个刚接触的人都需要一段时间来理解,特别是第 ...

  7. 很特别的一个动态规划入门教程

    很特别的一个动态规划入门教程 今天在网上看到一个讲动态规划的文章,是以01背包为例的,这文章和书上的讲解非常不一样,令我眼前一亮,于是转载一下下--- (说明一下,本人非常痛恨教材公式定理漫天飞,实际 ...

  8. 通过金矿模型介绍动态规划

    对于动态规划,每个刚接触的人都需要一段时间来理解,特别是第一次接触的时候总是想不通为什么这种方法可行,这篇文章就是为了帮助大家理解动态规划,并通过讲解基本的01背包问题来引导读者如何去思考动态规划.本 ...

  9. 通过金矿模型介绍动态规划(经典入门)

    对于动态规划,每个刚接触的人都需要一段时间来理解,特别是第一次接触的时候总是想不通为什么这种方法可行,这篇文章就是为了帮助大家理解动态规划,并通过讲解基本的01背包问题来引导读者如何去思考动态规划.本 ...

最新文章

  1. windows 常用thread方法
  2. 实现全屏轮播,并且轮播div中的文字盒子一直自动垂直居中
  3. 6.1.2.6 盒子
  4. Android中SharedPreferences与Editor的使用
  5. shell脚本--cut命令
  6. Java LocalDate类| isLeapYear()方法与示例
  7. 笨办法学 Python · 续 练习 28:`sh`
  8. Swing超市收银系统附图
  9. redis 将key的有效时间设置为不过期命令
  10. python学习之字符串函数用法
  11. python3学习笔记(4)_function-参数
  12. 为什么有人不喜欢标准成本
  13. iOS开发学习之NSFetchedResultsController
  14. 计算机动画推导,AE表达式实现逼真弹性动画
  15. nf_regester
  16. 如何搜索自己博客内的文章
  17. Memory Limit Exceeded
  18. 按计算机病毒的传染方式来分类可以分为良性,5、 计算机病毒分为哪几类?传染途径有哪些?...
  19. 功能自动化测试的策略有哪些?
  20. HTTP状态码(2xx,3xx,4xx,5xx)

热门文章

  1. Chrome浏览器最新版驱动包下载
  2. linux 离线 svn插件安装,Eclipse离线安装svn插件
  3. https证书相关概念
  4. Python 入门介绍
  5. jsp value设置为函数的返回值_python中的生成器函数是如何工作的?
  6. 华为服务器怎么查看系统日志,查询系统操作日志(operationlog)
  7. STM32建好的工程为啥下载不进去程序
  8. idea—开启Run DashBoard
  9. 大一报了c语言班要买电脑吗,少儿编程课程要自己买电脑吗
  10. jar命令更新jar中的class文件