动态规划

动态规划是求解决策过程的最优化问题方法。适合用动态规划求解的问题应该具备两个要素:最优子结构和子问题重叠。

下面是两个应用例子(来自《算法导论》):

Folyd-Warshall算法

i到j的最短路取自1到k个顶点集合表示为d(ij)k,如果包含k点,则是d(ik)k-1+d(kj)k-1.如果不包含k,则是d(ij)k-1

最长公共子序列问题(LCS)

最优子结构描述:
令X={x1,x2,…,xm}; Y={y1,y2,…,yn}为两个序列,Z={z1,z2,…,Zk}为X和Y的任意LCS。则
1.如果xm = yn,则zk=xm=yn且Z(k-1)是X(m-1)和Y(n-1)的一个LCS。
2.如果xm!=yn,则zk!=xm意味着Z是X(m-1)和Y的一个LCS。
3.如果xm!=yn,则zk!=yn意味着Z是X和Y(n-1)的一个LCS。

你可能感兴趣的:(动态规划)