关于动态规划的一点心得体会

今天又认真看了算法导论中的动态规划原理那一节, 有一点想法。

书中说的适合动态规划解决的问题有两个要素:最优子结构和子问题重叠。后者就有记忆化搜索这个没什么好讲的。那么关于最有子结构,其实当我们在猜测最优子结构时,一般有两个问题:一是我们要把规模为n的问题变成小于n的子问题;二是我们要合并小于n的这些子问题的解。这里我主要想讨论的是合并子问题时的一些问题。

举个例子《算法导论》15.2中提到的矩阵链乘法,我们用M(i,j)来记录Ai,Ai+1,……Aj的计算代价,那么求A1,A2,……Aj?我们假如从k和k+1初切割子问题能得到最优解,那么代价即为M(1,k)+M(k+1,j)再加上两个子问题合并的代价,即A1的行*Ak的列*Aj的列。这里注意:无论我们如何求解这两个子问题,A1的行*Ak的列*Aj的列这个值是永远不会变的。这就是我想讨论的重点:求解子问题,对合并子问题没有影响。这也是动态规划的一个要素!!

 

真是越看东西越多,我就一点一点记吧。插一句,算法导论真好,完全可以作为中国本科算法教材嘛,干嘛非要自己写书,删删减减,搞得教材很四不像,高不成低不就。

 

对子问题进行分析的时候,自己找个小例子画一下子问题分解图。这里比较难的是分析状态,如何确定状态呢?

 

转载于:https://www.cnblogs.com/chaiwentao/p/4357423.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值