zoukankan      html  css  js  c++  java
  • 背包问题

    01背包问题:拿与不拿的问题

    核心公式:f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]}

    这个方程非常重要,基本上所有跟背包相关的问题的方程都是由它衍生出来的。所以有必要将它详细解释一下:

    “将前i件物品放入容量为v的背包中”这个子问题,若只考虑第i件物品的策略(放或不放),那么就可以转化为一

    个只牵扯前i-1件物品的问题。如果不放第i件物品,那么问题就转化为“前i-1件物品放入容量为v的背包中”,价值

    为f[i-1][v];如果放第i件物品,那么问题就转化为“前i-1件物品放入剩下的容量为v-c[i]的背包中”,此时能获得

    的最大价值就是f[i-1][v-c[i]]再加上通过放入第i件物品获得的价值w[i]。

    一共有4个物品,总容量6
                              weight容量            value价值
    第1个物品              1                            4
    第2个物品              2                            6
    第3个物品              3                            12
    第4个物品              2                            7

    for(i=1;i<=n;i++)
        for(v=m;v>=weight[i];v--)
            f[v]=max(f[v],f[v-weight[i]]+value[i]);

    依次考虑将这4个物品放入背包
    第1个物品    f[6]=4  f[5]=4  f[4]=4 f[3]=4  f[2]=4  f[1]=4
    第2个物品    f[6]=10 f[5]=10 f[4]=10 f[3]=10 f[2]=6
    第3个物品    f[6]=22 f[5]=18 f[4]=16 f[3]=12
    第4个物品    f[6]=23 f[5]=19 f[4]=16 f[3]=12 f[2]=7

    完全背包问题:有N种物品和一个容量为V的背包,每种物品都有无限件可用。

    核心公式:f[i][v]=max{f[i-1][v-k*c[i]]+k*w[i]|0<=k*c[i]<=v}

    一共有4个物品,总容量6
                              weight容量            value价值
    第1个物品              1                            2
    第2个物品              2                            6
    第3个物品              3                            12
    第4个物品              2                            7

    for(i=1;i<=n;i++)
        for(v=weight[i];v<=m;v++)
            f[v]=max(f[v],f[v-weight[i]]+value[i]);

    依次考虑将这4个物品放入背包
    第1个物品    f[1]=2  f[2]=4  f[3]=6 f[4]=8  f[5]=10  f[6]=12
    第2个物品    f[1]=2 f[2]=6 f[3]=8 f[4]=12 f[5]=14 f[6]=18
    第3个物品    f[1]=2 f[2]=6 f[3]=12 f[4]=14 f[5]=18 f[6]=24
    第4个物品     f[1]=2 f[2]=7 f[3]=12 f[4]=14 f[5]=18 f[6]=24

    多重背包:有N种物品和一个容量为V的背包。第i种物品最多有n[i]件可用。

    核心公式:f[i][v]=max{f[i-1][v-k*c[i]]+k*w[i]|0<=k<=n[i]}

    文章列题来自队友。

    更多背包问题请看背包九讲:http://wenku.baidu.com/link?url=EKnPUq4mi40Iq3Y6fAPQa5K2_W35rX4o1JQAp3-UE-HvaGa_BEBAgtx0lgbaco5bcSM2u6yKOiPH8CWJWDE22p20edetFMn3SWapKOMBKlq

  • 相关阅读:
    知识全聚集 .Net Core 技术突破 | 如何实现一个模块化方案一
    企业项目实战 .Net Core + Vue/Angular 分库分表日志系统六 | 最终篇-通过AOP自动连接数据库-完成日志业务
    企业项目实战 .Net Core + Vue/Angular 分库分表日志系统五 | 完善业务自动创建数据库
    企业项目实战 .Net Core + Vue/Angular 分库分表日志系统四 | 强化设计方案
    企业项目实战 .Net Core + Vue/Angular 分库分表日志系统三 | 控制反转搭配简单业务
    企业项目实战 .Net Core + Vue/Angular 分库分表日志系统二 | 简单的分库分表设计
    SDN+DPI文献阅读(2)
    SDN中的Heavy-Hitter测量文献阅读
    DPI技术简介
    SDN+DPI文献阅读
  • 原文地址:https://www.cnblogs.com/ediszhao/p/4049687.html
Copyright © 2011-2022 走看看