动态规划小结
2014-03-18 21:55
211 查看
Dynamical Programming(动态规划)
这是一种对递归方法的优化,应用地最多的场合是组合优化问题(Combinatorial Optimization)。
在用一般递归方法解决某些问题的时候,会出现对同一个子问题的重复计算,例如:
f(n) = f(n-1) + f(n-2)
f(10) = f(9) + f(8) = (f(8) + f(7)) + f(8) = ...
例如上面的f(8)就被计算了很多次。 所以,动态规划实现了,在解决子问题的过程中,保存这些子问题的答案,供后面直接使用,避免重复计算。
动态规划的例子包括:
1、最长公共子序列问题(L[i,j])
2、矩阵链相乘的最小代价问题(C[i, j])
3、图的最短路径问题(Floyd算法)
4、背包问题 (V[i, j])
以上例子基本都是通过二维矩阵来保存每次递归计算的中间结果的。
而且这个中间结果也是子问题的最优解。
这是一种对递归方法的优化,应用地最多的场合是组合优化问题(Combinatorial Optimization)。
在用一般递归方法解决某些问题的时候,会出现对同一个子问题的重复计算,例如:
f(n) = f(n-1) + f(n-2)
f(10) = f(9) + f(8) = (f(8) + f(7)) + f(8) = ...
例如上面的f(8)就被计算了很多次。 所以,动态规划实现了,在解决子问题的过程中,保存这些子问题的答案,供后面直接使用,避免重复计算。
动态规划的例子包括:
1、最长公共子序列问题(L[i,j])
2、矩阵链相乘的最小代价问题(C[i, j])
3、图的最短路径问题(Floyd算法)
4、背包问题 (V[i, j])
以上例子基本都是通过二维矩阵来保存每次递归计算的中间结果的。
而且这个中间结果也是子问题的最优解。
相关文章推荐
- Eclipse安装ADT失败解决办法
- iframe去边框,无边框,使用大全
- HighCharts之2D折线图
- python学习笔记
- USACO Section 1.5 Prime Palindromes
- HighCharts之2D折线图
- Struts2—整合Spring
- struts 标签1
- 浙大PAT 3-06. 表达式转换 (解题思路)
- 算术基本定理,又称为正整数的唯一分解定理
- Android APK 签名比对
- UAS 和 UAC
- USACO Section 1.5 Number Triangles
- JavaScript面向对象
- 判断一个正整数是否为质数
- java做的一整形数据进制转换器
- 写给不想做OJ题的C++学习者
- Ehcache 中ehcache.xml 配置详解和示例
- Android APK 签名比对
- barcode EAN13 最后一位验证码