动态规划法所针对的问题有一个显著的特征,即它所对应的子问题树中的子问题呈现大量的重复。因此,动态规划的相应的特征是,对于重复出现的子问题,只在第一次遇到时加以求解,并把答案保存起来,让以后再遇到时直接引用,不必重新求解。
设计DP的步骤:
1> 分析最优解的性质,并刻画其结构特征
2> 递归地定义最优值
3> 以自底向上的方式计算出最优值
4> 根据计算最优值时得到的信息,构造出一个最优解
问题有:
最长公共字串问题(LCS)1968
《最长递增自序列》 1263
最大子序列和问题 1829
《最大子矩阵和问题》
组合数问题 2341
凸多边形的最优三角剖分
动态规划(DP)的例题:1、矩阵链乘有N个矩阵连乘,每个矩阵的维数已知,问如何加括号,调整计算次序,使得总计算量最小。2、最优多边形三角剖分(所有剖分边长之和最小)3、字符串的距离给定字符串的INSERT, DELETE,UPDATE的代价,求从一个字符串变成另一个的最小代价。4、最长公共子序列有两个字符串,求他们的最长公共子序列。子序列中元素的次序和原字符串相同,但不要求连续。5、最长递增子序列在一个整数数组中,找出最长的递增的子序列,不必连续。6、最优二叉搜索树7、 最大子串和 在一个一维数组里找出连续的几个数,使数的总和最大8、最短路径:所有节点间的最短路径。9、找零钱输入一套货币体系,和待找的钱数。用最少张数的钞票表示出来以上是典型的动态规划题目,并且可以在较短的时间复杂度内完成。10、两工序加工次序问题:N个任务需要在机器M1,M2上加工,每个任务必须先经过M1,后经过M2的两道加工顺序.Ti1,Ti2表示任务Ji在M1,M2上所需的工作时间。问如何安排,使得总加工时间最短。这实际是一个贪心法求解问题11、0-1背包,整数背包以及其他变形12、TSP问题(NP)这两个问题,DP只能作一定的优化。