动态规划(算法导论学习笔记)

动态规划是通过组合子问题的解而解决整个问题的。和分治法的区别在于:分治法算法是指将问题划分成一些独立的子问题,递归地求解各子问题,然后合并子问题的解而得到原问题的解。与此不同,动态规划适用于子问题不是独立的情况,也就是各子问题包含公共的子子问题,动态规划算法是对每个子子问题只求解一次,将其结果保存在一张表中,从而避免每次遇到各个子问题时重新计算答案。

动态规划常用于最优化问题。此类问题可能有很多种可行解。每个解有一个值,而我们希望找出一个具有最优(最大或最小)值的解。

动态规划算法的设计可以分为如下4个步骤:

1、描述最优解的结构。

2、递归定义最优解的值。

3、按自底向上的方式计算最优解的值。

4、由计算出的结果构造一个最优解。

动态规划的最优子结构:一个问题的最优解包含了子问题的一个最优解。

是否可以采用动态规划的两个标志:1、最优子结构   2、子问题重叠


在找寻最优子结构时,可以遵循一种共同的模式:

1、问题的一个解可以是做一个选择。例如,选择一个前一个装配线装配站;或者选择一个下标以在该位置分裂矩阵链。做这种选择会得到一个或多个有待解决的子问题。

2、假设对一个给定的问题,已知的是一个可以导致最优解的选择。

3、在已知这个选择后,要确定哪些子问题会随之发生,以及如何最好地描述所得到的的子问题空间。

4、利用一种“剪贴”技术,来证明在问题的一个最优解中,使用的子问题的解本身也必须是最优的。通过假设每一个子问题的解都不是最优解,然后导出矛盾。


未完待续。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值