day 17 线性规划

105 阅读1分钟
  1. 动态规划的分析角度
    1. 状态表示
      1. 属性(最大值,最小值...)
      2. 集合
        1. 所有选择
        2. 条件(体积小于某数,只能从前i个数里选)
    2. 状态计算
      1. 集合划分

根据上面的方法可以分析

  1. 0-1背包问题:
  • 状态表示:
    • 属性:最大值。
    • 集合:选择是否放入背包。对于每个物品,我们可以选择将其放入背包(表示为1)或不放入背包(表示为0)。
  • 状态计算:
    • 集合划分:对于每个物品和背包容量,我们需要考虑以下两种情况:
      1. 如果当前物品的重量超过了背包的容量,则无法放入背包,此时的最大价值与上一个物品时的最大价值相同。
      2. 如果当前物品的重量可以放入背包,我们需要考虑将其放入背包与不放入背包两种情况的最大价值,选择较大的那个作为当前状态的最大价值。
  1. 完全背包问题:
  • 状态表示:
    • 属性:最大值。
    • 集合:选择物品的数量。对于每个物品,我们可以选择将其放入背包的不同数量,从0到无穷大。
  • 状态计算:
    • 集合划分:与0-1背包问题类似,但不同之处在于对于每个物品,我们需要考虑所有可能的数量。我们需要遍历所有的数量,计算放入当前物品和不放入当前物品的情况下的最大价值,并选择其中的最大值作为当前状态的最大价值。