zoukankan      html  css  js  c++  java
  • 动态规划

    一、步骤

          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

  • 相关阅读:
    DevOps平台中的自动化部署
    GitLab的安装及使用教程
    Nginx配置相关
    Shell常用模块
    PostgreSQL基础
    大数据集群监控工具
    大数据常用组件
    kafka知识
    数据结构可视化(包括红黑树动态演示)
    python 周考1
  • 原文地址:https://www.cnblogs.com/luori719/p/5237950.html
Copyright © 2011-2022 走看看