[试题]

0-1背包问题可以描述为:有n个物品,对i=1,2,…,n,第i个物品价值为vi ,重量为wi(vi,和wi为非负数),背包容量为W(W为非负数),选择其中一些物品装入背包,使装入背包物品的总价值最大,,且总重量不超过背包容量,即,其中,xi∈{0,1},xi=0表示第i个物品不放入背包,xi=1表示第i个物品 放入背包。

(问题1)(8分)

用回溯法求解此0-1背包问题,请填充下面伪代码中(1)~(4)处空缺。

回溯法是一种系统的搜索方法。在确定解空间后,回溯法从根结点开始,按照深度优先策略遍历解空间树,搜索满足约束条件的解。对每一个当前结点,若扩展该结点己经不满足约束条件,则不再继续扩展。为了进一步提高算法的搜索效率,往往需要设计一个限界函数,判断并剪枝那些即使扩展了也不能得到最优解的结点。现在假设已经设计了BOUND(v,w,k,W)函数,其中v, w, k和W分别表示当前已经获得的价值、当前背包的重量、己经确定是否选择的物品数和背包的总容量。对应于搜索树中的某个结点,该函数值表示确定了部分物品是否选择之后,对剩下的物品在满足约束条件的前提下进行选择可能获得的最大价值,若该价值小于等于当前已经得到的最优解,则该结点无需再扩展。

下面给出0-1背包问题的回溯算法伪代码。

函数参数说明如下:

W:背包容量;n:物品个数;w:重量数组;v:价值数组;fw:获得最大价值时背包的重量;fp:背包获得的最大价值;X:问题的最优解。

变量说明如下:

cw:当前的背包重量;cp:当前获得的价值;k:当前考虑的物品编号;Y:当前已获得的部分解。

B.KNAP(W,n,w,v,fw,fp,X)

1 cw ← cp ← 0

2 (1)

3 fp ← -1

4 while true

5 while k≤n and cw+w[k]≤W do

6 (2)

7 cp ← cp+v[k]

8 Y[k]← 1

9 k ← k+1

10 if k>n then

11 if fp<cp then

12 fp ← cp

13 fw ← ew

14 k ← n

15 X ← Y

16 else Y(k)← 0

17 while BOUND(cp,cw,k,W) ≤fp do

18 while k≠0 and Y(k)≠1 do

19 (3)

20 if k=0 then return

21 Y[k]←0

22 cw ← cw ← w[k]

23 cp ← cp ← v[k]

24 (4)

参考答案与解析:

相关试题

若操作系统中有n 个作业Ji(i=1,2,…,n),分别需要Ti(i=1,2,…

[单选题]若操作系统中有n 个作业Ji(i=1,2,…,n),分别需要Ti(i=1,2,…,n)的运行时间,采用(40)的作业调度算法可以使平均周转时间最短。A.先来先服务B.最短时间优先C.响应比高者优先D.优先级

  • 查看答案
  • 若操作系统中有n个作业Ji(i=1,2,…,n),分别需要Ti(i=1,2,…,

    [单选题]若操作系统中有n个作业Ji(i=1,2,…,n),分别需要Ti(i=1,2,…,n)的运行时间,采用______的作业调度算法可以使平均周转时间最短。A.先来先服务B.最短时间优先C.优先级D.响应比高者优先

  • 查看答案
  • 若操作系统中有n个作业Ji(i=1,2,…,n),分别需要Ti(i=1,2,…,

    [单选题]若操作系统中有n个作业Ji(i=1,2,…,n),分别需要Ti(i=1,2,…,n)的运行时间,采用(23)的作业调度算法可以使平均周转时间最短。A.先来先服务(FCFS)B.最短作业优先(SJF)C.响应比高者优先(HRN)D.优先级

  • 查看答案
  • 若操作系统中有n个作业Ji(i=1,2,…,n),分别需要Ti(i=1,2,…,

    [单选题]若操作系统中有n个作业Ji(i=1,2,…,n),分别需要Ti(i=1,2,…,n)的运行时间,采用()的作业调度算法可以使平局周转时间最短。A . 2/3B . 2/5C . 2/7D . 2/9

  • 查看答案
  • 设X~N(μ,σ2),σ未知,xi为样本(i=1,2,…,n),H0:μ=μ0,

    [单选题]设X~N(μ,σ2),σ未知,xi为样本(i=1,2,…,n),H0:μ=μ0,Hi:μ≠μ0,a为显著性水平,则接受域为( )。A.t<t1-a(n-1)B.t>ta(n-1)C.D.以上都不对

  • 查看答案
  • 设X~N(μ,σ2),σ未知,xi为样本(i=1,2,…,n)。H0:μ≤μ0,

    [单选题]设X~N(μ,σ2),σ未知,xi为样本(i=1,2,…,n)。H0:μ≤μ0,H1:μ>μ0,α为显著性水平,则接受域( )。

  • 查看答案
  • 设X~N(μ,σ2),σ已知,xi为样本(i=1,2,…,n),H0:μ=μ0,

    [单选题]设X~N(μ,σ2),σ已知,xi为样本(i=1,2,…,n),H0:μ=μ0,H1:μ≠μ0,则检验统计量指的是( )。

  • 查看答案
  • 若操作系统中有n个作业Ji(i=1,2,…,,z),分别需要Ti(i=1,2,…

    [单选题]若操作系统中有n个作业Ji(i=1,2,…,,z),分别需要Ti(i=1,2,…,n)的运行时间,采用______的作业调度算法可以使平均周转时间最短。A.先来先服务B.最短时间优先C.响应比高者优先D.优先级A.B.C.D.

  • 查看答案
  • 栈的输入序列为1,2,3,…,n£­1,n,输出序列的第1个元素为n,则第i个输

    [单选题]栈的输入序列为1,2,3,…,n-1,n,输出序列的第1个元素为n,则第i个输出元素为A.n-i+1B.n-1C.iD.哪个元素无所谓

  • 查看答案
  • 用动态规划方法求解0£¯1背包问题时,将“用前i个物品来装容量是X的背包”的0£

    [单选题]用动态规划方法求解0/1背包问题时,将“用前i个物品来装容量是X的背包”的0/1背包问题记为 KNAP(1,i,X),设fi(X)是KNAP(1,i,X)最优解的效益值,第j个物品的重量和放入背包后取得效益值分别为Wj和巧Pj(j=1~n)。则依次求解f0(X)、f1(X)、…、fn(X)的过程中使用的递推关系式为(58)。A.fi(X)=min{fi-1(X),fi-1(X)+pi}B.fi(X)=min{fi-1(X),fi-1(X-wi)+pi}C.fi(X)=max{fi-1(X),fi

  • 查看答案