在基于划分子问题的基础上,衍生出两种优秀的方法——a. 动态规划  b. 备忘录算法

a. 动态规划的基础是最优子结构———若一个大问题可以划分成多个小问题,则在这多种划分中,必有一种划分,可使得作为宏观问题,这种划分得到的效果最优;而在每个划分出的子问题中,每个子问题也必有一个最优划分(否则用更好的划分来代替原子问题的划分,将会影响到宏观结果)

动态规划的过程是利用子结构,进行自底而上的算法设计,应为采用自底而上,故上面的问题依赖于下面问题的求解,下面的一些结果也直接提供给上层问题使用(作为上层问题的素材)。避免了重复计算(实际上采用自底向上的多循环结构。利用多维数组存储结果,就可以避免重复问题,举个例子,就像设计一个高级算法,底层的算法诸如排序算法,一次编写,可以供多个算法,多次使用)

弊处所在,就是没有在处理的过程中实时的进行处理,达到理想效果,而是用多次循环计算,用另外一个数组存储暂时所得的结果(用于拼接最后结果)——实际上,这也是自底向上的算法的通病,无法像修剪枝条一样砍掉其它部分。

b.利用备忘录方法呢,就可以在递归处理问题的基础上,将需要后来多次计算的问题进行缓存,减少了重复子问题的计算。但是书中所记的备忘录方法没有真正的将自上而下的精髓体现出来,若是将自上而下的思想结合最优子结构的思想,则可以对问题进行修剪枝条,在宏观出即可去掉一大部分的不需计算的方面,比如一个问题的划分可以有两种,选择了最优的一种,就可以将另一种非最优情况下的所有计算均省去,然后再对第一次的划分再次进行划分,其结构是树由根向叶,不断的择取最优的树干,最终至叶子,非最优树干直接不计算。

最终效果图

关于动态规划与备忘录方法的总结相关推荐

  1. 动态规划备忘录方法Java_动态规划和备忘录法的区别

    动态规划算法的基本要素:1最优子结构性质当问题的最优解包含了其子问题的最优解时,称该问题具有最优子结构性质.2重叠子问题性质动态规划算法对每个问题只解一次,将其解保存在一个表格中,当再次需要解此问题时 ...

  2. 备忘录方法与动态规划比较

     动态规划算法的基本要素:  1  最优子结构性质 当问题的最优解包含了其子问题的最优解时,称该问题具有最优子结构性质. 2  重叠子问题性质    动态规划算法对每个问题只解一次,将其解保存在一个表 ...

  3. 动态规划备忘录方法递归方法

    动态规划的基本思想是,将原问题拆分为若干子问题,自底向上的求解.其总是充分利用重叠子问题,即通过每个子问题只解一次,把解保存在一个表中,巧妙的避免了子问题的重复求解. 递归方法,采用的是自顶向下的思想 ...

  4. 【史上最详细】动态规划:矩阵连乘问题(C++实现,含备忘录方法)

    动态规划与分治法的异同: 相同点:其基本思想都是将待求解问题分解为若干子问题,先求解子问题,再结合这些子问题的解得到原问题的解. 差异点:与分治法不同的是,适合用动态规划法求解的问题经分解得到的子问题 ...

  5. 3n+1b 备忘录方法

    题目详情 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反复砍下去,最后一定在某一步得到n=1.卡拉兹在1950年的世界数学家大会上公布了这个猜 ...

  6. nyoj 10 skiing(DAG上的最长路,备忘录方法)

    skiing 时间限制:3000 ms  |  内存限制:65535 KB 难度:5 描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑 ...

  7. 动态规划C++实现--换钱的方法数(二)(动态规划及其改进方法)

    题目:换钱的方法数 给定数组 arr, arr中所有的值都为正数且不重复.每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个整数aim代表要找的钱数,求换钱有多少种方法. 将原文的伪代 ...

  8. 强化学习(二):动态规划与蒙特卡洛方法

    目录 1. 动态规划(Dynamic Programming, DP) 1.1. 策略评估(预测) 迭代策略评估 1.2. 策略改进(控制) 什么是更优的策略? 如何获得更优的策略? 1.3. 策略迭 ...

  9. 备忘录方法代码c语言,在C语言中操作备忘录的方法

    在C语言中操作备忘录的方法 一:fopen()中的第二参数(模式参数)的格式详解 可用来组合的字符有:r,w,a,t,+,b,它们分别代表的意义为: r: read; w: write; a: app ...

最新文章

  1. 揭秘仿人机器人背后的技术秘密 | 优必选研究院技术专家刘益彰【附PPT】
  2. SAP PP生产订单相关信息的获取
  3. python读取excel送到网页_python怎么读取excel!怎么用python将excel数据写入网页中
  4. Dynamips和Vmware完成CCVP试验(2)
  5. 常用的数据统计Sql 总结
  6. 怎样不通过高考进入清华计算机系,山东高考状元孟令昊澄清,没有参加政审,已经填报清华计算机系!...
  7. React开发(204):react代码分割之路由懒加载
  8. 小案例:编写立方体六个面,合成一张全景图后端
  9. 附带备忘录的斐波那契(C++)
  10. Java中常用的6种排序算法详细分解
  11. python udp通信_Python实现UDP程序通信过程图解
  12. 护肤品APP界面设计模板,可以临摹的UI好素材
  13. [论文阅读] Transformer Transforms Salient Object Detection and Camouflaged Object Detection
  14. 一个未知高度垂直居中的简单方法
  15. Google+再曝漏洞!5250万用户信息恐泄露
  16. go实现json格式文件的输出---小示例
  17. 微信登录界面安卓代码_安卓Activity劫持与反劫持
  18. TeamTalk UtilPdu详解
  19. 电商seo培训之卖家搜索优化步骤
  20. python抖音培训真的假的

热门文章

  1. 【Android 逆向】类加载器 ClassLoader ( 使用 DexClassLoader 动态加载字节码文件 | 拷贝 DEX 文件到内置存储 | 加载并执行 DEX 字节码文件 )
  2. 【EventBus】EventBus 源码解析 ( 事件发送 | postToSubscription 方法 | EventBus 线程模式处理细节 )
  3. 【Android 插件化】Hook 插件化框架总结 ( 插件包管理 | Hook Activity 启动流程 | Hook 插件包资源加载 ) ★★★
  4. 【Android NDK 开发】Android Studio 使用 CMake 导入静态库 ( CMake 简介 | 构建脚本路径配置 | 引入静态库 | 指定静态库路径 | 链接动态库 )
  5. 【重构】 代码的坏味道总结 Bad Smell (一) (重复代码 | 过长函数 | 过大的类 | 过长参数列 | 发散式变化 | 霰弹式修改)
  6. 2019.08.17【NOIP?提高组】模拟 A 组 总结
  7. 简单多边形与圆交面积模板
  8. Sum All Primes
  9. HDU 5693 D Game 区间dp
  10. JavaScriptSerializer进行JSON序列化,得到字符串