算法设计报告——浅谈动态规划

摘要:动态规划是一种求解某一类问题的核心思想,通过“大而化小”的思路解决问题的算法,与分治,递归算法类似却又不同,过程就是分析问题,构造状态转移方程,储存(缓存)子问题的解以空间换时间,并且无后效性,这种求解问题的思想大大降低了时间复杂度。
关键字:大而化小 递归 状态转移方程 缓存 空间换时间

1.动态规划的定义
1.1 动态规划求解思路的特点
Jon Kleinberg 的《算法设计》中对于动态规划是这么定义的:
dynamic programming is a method for solving a complex problem by breaking it down into a collection of simpler subproblems, solving each of those subproblems just once, and storing their solutions.
也就是说,动态规划一定是具备了以下三个特点:
1.把原来的问题分解成了几个相似的子问题。
2.所有的子问题都只需要解决一次。
3.储存子问题的解。
那么如何通过这三个特点求解问题呢?
1.2 引入实例:
从最经典的斐波那契数列(Fibonacci)的谈起,利用之前动态规划的三个特点来求解
1, 1, 2, 3, 5, 8, 13 ,21 …
根据动态规划的三个特点,把原问题分解成几个相似的子问题。
原问题和子问题之间的关系是:
Fibonacci(n)=Fibonacci(n-1)+Fibonacci(n-2)
现在需要计算n=6斐波拉契的值,那

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值