美文网首页
算法之背包问题

算法之背包问题

作者: Pytorch小生 | 来源:发表于2018-10-16 14:50 被阅读0次

背包问题(Knapsack problem)

背包问题是一种组合优化问题,为NP-C Problem

描述

给定一组物品,每个物体都有一定的价值和重量。
给定一个可容纳一定重量的背包,在限定容量内,如何选择物体,使得背包内物体价值总和最高。

解决思路

背包问题的经典解法思路是动态规划
遍历给定物体,当物体重量小于等于背包可容纳重量时,判断放入该物体和之前物体哪个带来价值最大,然后考虑是否置换物体。
状态转移方程

算法之背包问题

解题方程(python)

测试数据: 背包容量 c = 10 物品数量 n = 6 物体重量和价值为: w = [2,2,3,1,5,2] v = [2,3,1,5,4,3]

  1. 求包内可放入最大价值
def get_max_value(c,n,w,v):
    #Time O(cn)
    #Space O(cn)
    dp = [[0 for _ in range(c+1)] for _ in range(n+1)]
    for i in range(1,n+1):
        for j in range(1,c+1):
            dp[i][j] = dp[i-1][j]
            #状态转移方程
            if j >= w[i-1] and dp[i][j] < dp[i-1][j-w[i-1]] + v[i-1]:
                dp[i][j] = dp[i-1][j-w[i-1]] + v[i-1]
    return dp[-1][-1]
    
  1. To do:背包问题优化

参考资料

https://blog.csdn.net/qq_34178562/article/details/79959380

相关文章

  • 算法之背包问题

    背包问题(Knapsack problem) 背包问题是一种组合优化问题,为NP-C Problem 描述 给定一...

  • 算法—背包问题

    什么是背包问题:给出一系列矩阵,各自有值和容量,目标是找出总值最大的集合。这个问题的限制是,总容量必须小于等于”背...

  • 2019-07-10 数据结构和算法(妙味杜鹏)

    八皇后 A *寻路 背包问题(动态规划方法) 背包问题(贪心算法)

  • 14《算法入门教程》贪心算法之背包问题

    1. 前言 本节内容是贪心算法系列之一:背包问题,主要讲解了什么是背包问题,如何利用贪心算法解决背包问题,给出了背...

  • 背包问题之动态归化算法

    网上有一篇文章思路很清晰,http://www.sohu.com/a/149393500_479559,但图示的代...

  • PHP经典算法之背包问题

    问题:假设有一个背包的负重最多可达8公斤,而希望在背包中装入负重范围内可得之总价物品,假设是水果好了,水果的编号、...

  • 【算法】01背包问题

    一、问题 描述 给定 n 种物品和一个容量为 C 的背包,物品 i 的重量是 wi,其价值为 vi。 问:应该如何...

  • 背包问题算法探究

    有N个物品,其价值为数组W[],重量为数组P[],包的承重量为M,问包能承重的最大价值? 一、设F[i,j]为前i...

  • 算法Balabala背包问题

    前言 前文用较多篇幅介绍了动态规划算法的套路,以后的文章可能就不用这么多篇幅描述详细的思考过程。 现在再来解决一个...

  • 编程

    今天用0-1算法,编写了背包问题!

网友评论

      本文标题:算法之背包问题

      本文链接:https://www.haomeiwen.com/subject/codhzftx.html