zoukankan      html  css  js  c++  java
  • 关于动态规划的一点心得体会

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

    书中说的适合动态规划解决的问题有两个要素:最优子结构和子问题重叠。后者就有记忆化搜索这个没什么好讲的。那么关于最有子结构,其实当我们在猜测最优子结构时,一般有两个问题:一是我们要把规模为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的列这个值是永远不会变的。这就是我想讨论的重点:求解子问题,对合并子问题没有影响。这也是动态规划的一个要素!!

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

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

  • 相关阅读:
    rmq +二分暴力 hdu 5726
    8.25 ccpc 比赛总结
    莫比乌斯反演题目总结
    HDU 4848 Wow! Such Conquering! (搜索+floyd)
    Codeforces 982 C Cut 'em all!(DFS)
    Codefoces 986C AND Graph(DFS)
    CodeForces 986A Fair(BFS)
    ACM经验贴
    Kattis A+B Problem(FFT)
    CF E. Porcelain (双向dp)
  • 原文地址:https://www.cnblogs.com/chaiwentao/p/4357423.html
Copyright © 2011-2022 走看看