首页 > 其他 > 详细

动态规划

时间:2016-03-03 12:44:04      阅读:94      评论:0      收藏:0      [点我收藏+]

一、步骤

      1、刻画最优解的结构特征;

      2、递归的定义最优解的值;

      3、计算最优解的值,通常采用自底向上的方法;

      4、利用计算出的信息构造一个最优解。

二、例子(最长公共子序列问题)

问题描述:

      给定两个字符串A[m]、B[n],求它们的最长公共子序列C。

1、刻画最优解的结构特征

    如果temp=A[m]=B[n],C=temp+max_common_len(A[1,...,m-1],B[1,...,n-1]);

    如果A[m]!=B[n],则C=maxLen(max_common_len(A[1,...,m],B[1,...,n-1]),max_common_len(A[1,...,m-1],B[1,...n]))。

2、递归的定义最优解的值

    设C[i,j]表示两个串A[i]与B[j]的最长公共子序列的长度,则

     if i=j=0, C[i,j]=0;

     if i,j>0 and A[i]==B[j], C[i,j]=1+C[i-1,j-1];

     if i,j>0 and A[i]!=B[j], C[i,j]=max(C[i-1,j],C[i,j-1]).

3、计算最优解

   LCS

 

动态规划

原文:http://www.cnblogs.com/luori719/p/5237950.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!