无论过程的初始状态和决策是什么,其余的决策都必须相对于初始决策所产生的状态构成一个最优决策序列。这要求原问题计算模型的最优解需要包含其子问题的一个最优解。最优子结构性质。
动态规划算法采用自顶向下求解时,每次产生的子问题并不总是新问题,有些子问题反复计算多次,动态规划算法正是利用了这种子问题重叠性质,对每个子问题只计算一次。
最优子结构性质和子问题重叠性质是计算模型采用动态规划算法求解的两个基本要素。
首先确定问题具有最优子结构性质的计算模型,然后寻找原问题的最优值和子问题的最优值之间的递推关系(自上而下),最后自底向上递归地构造出最优解(自下而上)。
多段图问题:
由后向前:Cost(i,j)= min{c(j,l)+Cost(i+1,l)}
由前往后(备忘录方式):Cost(i,j)= min{Cost(i-1,l)+c(l,j)}
0/1背包问题:
用一个二维数组存储某种情况下的效益值。第一个维度代表的是第几个数据,第二个维度代表的是当前所剩的容量。
M[n][c] = max{M[n-1][c] ,M[n-1][c-wn]+pn}
思考方式是自上而下的思考,考虑n与n-1之间的关系。
http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741374.html
与分治法最大的差别是:适合于用动态规划法求解的问题,经分解后得到的子问题往往不是互相独立的(即下一个子阶段的求解是建立在上一个子阶段的解的基础上,进行进一步的求解
http://blog.csdn.net/qiuyoungster/article/details/6997223