动态规划--总体理解

对比
  • 贪心(greedy):局部最优(local best),不保证全局最优
  • 穷举(exhaustive search)搜索:代价昂贵(prohibitive cost)

动态规划:是二者的综合平衡。因此,这是下一代的杰作。是贪心与穷举所生。

核心思想:可以编写定制的算法,系统的搜索全部的可能解(保证正确性:correctness),并且通过存储结果以避免重复计算(保证效率:efficiency)。

即,设计动态规划的算法,要考虑到这两个方面是否实施,也是验证算法是否完备的依据。

一旦真的理解了动态规划算法,那么它将称为你设计算法的绝招, 将是解决问题的最简洁方案,代码也非常优雅。体现了大道至简的哲学道理。

此外,理解了动态规划以后,很容易自己创造,而不用查书看标准写法,比如AVL树这种结构,不查书,找参考,手写出来很难,很难。

但是,不理解动态规划的思想,这类算法将像魔法一样,令人难以捉摸。

这提高了学习的门槛,一旦进入大门,将跨入新的层次。

缓存 v.s. 重新计算

http://blog.csdn.net/u011240016/article/details/52472315

这篇博客深入总结了基于Cache策略的斐波那契数列的计算方法,以及时间,空间优化的过程。

缓存的策略可以在任何递归算法中实现,但是以下几个常用算法不必实现:快速排序,回溯法,深度优先搜索。
不能用的原因是,我们存的数据被后面的过程查看取用才有价值,不被利用则没有价值。这些算法的参数都是不同的,因此,缓存没有必要,纯属浪费空间。

此外,要平衡缓存的代价与收益。在斐波那契的例子汇总,缓存的空间代价值O(n),解决的是指数问题,因此很值得。

—笔记总结自《算法设计手册》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值