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)

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

  • 相关阅读:
    魅族--魅蓝metal
    小米2015.11.24 雷军:我所有的向往
    微软2015.10.4发布会
    创意app1
    奇怪的想法2
    奇怪想法1
    对不起,我爱你(悲剧,慎入)
    聊聊台式机1
    聊聊笔记本1--人生第一台笔记本
    聊聊路由器1
  • 原文地址:https://www.cnblogs.com/ZDHYXZ/p/8428076.html
Copyright © 2011-2022 走看看