Advertisement

背包问题:三种动态规划解法及其逐步减少空间复杂度

阅读量:

共有五件物品标号分别为1至5,请计算每件物品的质量参数及最优组合方案

具体来说

每件物品的质量参数包括其重量及对应的价值数值

第一件物质量数为2单位

第二件物质量数也为2单位

第三件物质量数则达到6单位

第四件物质量数则为5单位

第五件物质量数最后确定为4单位

对应的价值数值分别为

第一件物质量值为6单位

第二件物质量值则定为3单位

第三件物质量值最高达5单位

第四件物质量值则为4单位

第五件物质量值同样定为6单位

假设有一个可承载重量不超过10单位的背包

请计算出最优装包方案以实现总价值最大化

背包问题是典型的动态规划实例,在其规律性较强的基础上多采用自底向上的策略。具体而言,该方法通常会将复杂的大规模问题分解为小规模的问题逐步解决,并将其结果存储起来,最终进而推进至较大的规模。

一种解法:其时间和空间复杂度均为O(n^2)的解法,在获得最大价值的情况下具体拿取了哪些物品?

这里dp[i][j]的含义是:在只有i个物品,最大容量为j时,能获得的最大价值

复制代码
    def bag(weight, value, max_W):
    N = len(weight)
    V = max_W
    dp = [[0 for i in range(V+1)] for j in range(N+1)]
    
    for i in

全部评论 (0)

还没有任何评论哟~