0
点赞
收藏
分享

微信扫一扫

动态规划算法解背包问题的一些想法

爱上流星雨 2022-04-22 阅读 43

背包问题是这样的:背包有一个重量的约束,不能无限制的装入物品,被装的物品是不可以切割的,整体的装或者不装。另外如果物品数量没有限制的话,那其实就是一个完全背包问题,如果数量有限制,只能装进去1次或者不装进去那这就是零一背包问题,现在我们研究完全背包问题。
bag

一、实例分析

实例001
实例002
实例003
现在我们看这个实例,有一个物品重量是:2,价值是:1(省去单位),第二个物品重量是:3,价值是:3(省去单位)。总限制b是:10。所以现在就是装第三个物品W3,就可以装第一个和第二个物品(4+3+2<10),而不能装第四个物品(4+7>10)。现在就需要想办法怎么去选择这些物品装到背包里面能达到最大。

二、建模

解是<x1, x2,…, xn>,其中xi 是装入背包的第 i 种物品个数
在这里插入图片描述
线性规划问题: 由线性条件约束的线性函
数取最大或最小的问题
整数规划问题: 线性规划问题的变量 xi
都是非负整数

追踪算法

输入: ik (y), k=1,2,,n, y=1,2,,b 
输出: x1, x2,,xn,n种物品的装入量 
  1.   for  k←1  to  n  do  xk← 0 
  2.    y←b,   k←n 
  3.    j←ik (y) 
  4.    xk ←1  
  5.    y←y- wk 
  6.    while  ik(y)=k   do 
  7.           y←y-wk 
  8.           xk←xk+ 1 
  9.   if   ik(y)0  then  goto   4 	 

举报

相关推荐

0 条评论