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

参考书目——《计算机算法设计与分析 王晓东》

本文仅供博主备忘,诸多谬误,愿谅解


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


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


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

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


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


最终效果图









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值