zoukankan      html  css  js  c++  java
  • 关于动态规格的新理解

    今天又一次听了动态规划,有些许感悟,所以想和大家分享一下

    动态规划是什么?

    是一种思想,

    把问题逐渐变小,使我们通过一个式子就可以推出结果(在递推的基础上)

    要点:1.方程式

               2边界条件

               3.状态之间的联系

    分类 1.线性动规

             2.背包动规

            3.区间动规

            4.树形动规

            5DAG动规

    下面我们分类来讲

    1.线性动规

    dp[i]表示前i个物品的最优方案

    dp[i][0/1]表示前i个物品,其中第i个物品是否被选中,此时的最优方案

    dp[i][k]表示前i个物品,选出k个的最优方案

    例题:LIS,除了剩下的四种的所有

    2.背包动规

    dp[i][v]表示前i个物品消耗体积v的最大收益

    例题:01,完全,多重,二维,分组

    3.区间动规

    dp[l][r]表示区间[l,r]的最优答案

    l==r有时是边界

    dp[l][k]+dp[k+1][r];

    4.树形动规

    在树上进行动态规划

    一般以父子关系为约束

    比如:父亲和儿子不能被同时选中

    dp[v]表示以v为根节点的子树能获得的最大收益

    dp[v][s]表示以v为根节点的子树,s表示节点v是否被选中,此种情况下的最大收益

    (有根树和无根树不是一种题)

    例题:没有上司的舞会

      dp[u][0]=sigma(max(dp[v][0],dp[v][1]))

    dp[u][1]=sigma(dp[v][0])+A[u];

    5.DAG动规 (有向无环图)

    把树形动规扩展到DAG上,就是DAG动规

    dp[u]表示以节点U为结尾的路径的答案

    例题:DAG最长链

    dp[v]表示以节点v为结尾的最长路径

    dp[v]=max(dp[u]+w[u][v]|u->v)

    先做拓扑排序,按照拓扑排序的顺序进行动态规划

  • 相关阅读:
    0808 HTML 基础
    2016.8.3 C#基础 结构体,枚举类型
    2016.8.1 C#基础 传值
    2016.7.22
    2016.7.20
    2016.7.31C#基础 函数
    2016.07.30C#基础 特殊集合
    2016.7.28C#基础 集合
    个人项目网页3
    个人项目网页2
  • 原文地址:https://www.cnblogs.com/ZDHYXZ/p/8428076.html
Copyright © 2011-2022 走看看