首页/ 题库 / [问答题]考虑用分支限界解0-1背包问题 给定n种的答案

考虑用分支限界解0-1背包问题 给定n种物品和一背包。物品i的重量是wi,其价值为vi,背包的容量为C。问应如何选择装入背包的物品,使得装入背包中物品的总价值最大? 示例:n=3,C=30,w={16,15,15},v={45,25,25} 求: 1、问题的解空间树 2、约束条件 2、如何剪枝?

问答题
2023-03-04 23:03
查看答案

正确答案
问题的解空间树:

约束条件:
如何剪枝:
设r是当前尚未考虑的剩余物品价值总和;Cv是当前价值;bestv是当前最优价值。
当r+Cv≤bestv时,可剪去右子树。

试题解析

标签: 大学试题 工学
感兴趣题目
有以下程序main(){ int n[3],i,j; for(i=0;i<3;i++) n[i]=0; for(i=0;i<2;i++) for(j=0;j<2;j++) n[j]=n[i]+1; printf( "%d\n",n[1]);}程序运行后的输出结果是A.2 B.1C.0 D.3
有如下程序 main() { int n[5]={0,0,0},i,k=2; for(i=1;i<3;i++)n[i]=n[i]+1; printf("%d ",n[k]); }该程序的输出结果是______。
有如下程序 main( ) {int n[5]={0,0,0},i, k=2; for(i=0 i<k i++)n[i]=n[i]+1; cout<<n[k]<<end1; }该程序的输出结果是
下列程序执行后,n的值为 n=0 For I=1 To 200 If I Mod 4 = 0 Then n = n+1 Next I
有以下程序 main() { int n[3],i,j; for(i=0;i<3;i++)n[i]=0; for(i=0;i<2,i++) for(j=0;j<2;j++)n[j]=n[i]+1; printf("%d ",n[1]); } 程序运行后的输出结果是( )
已知有二维数组A[0..n-1][0..n-1],其中当i+j=n时,A[i][j]≠0,现在要将A数组压缩存储到一维数组T[0..m],其中m>n。数组T的第一个元素T[0]=A[1][n-1] T[1]=A[2][n-2],……,依次类推,那么放入A[i][j](i+j=n)的元素是(37)。
●已知有二维数组A[0..n-1][0..n-1],其中当i+j=n时,A[i][j]≠0,现在要将A数组压缩存储到一维数组T[0..m],其中m>n。数组T的第一个元素T[0]=A[1][n-1] T[1]=A[2][n-2],……,依次类推,那么放入A[i][j](i+j=n)的元素是 (37) 。
●已知有二维数组A[0..n-1][0..n-1],其中当i+j=n时,A[i][j]≠0,现在要将A数组压缩存储到一维数组T[0..m],其中m>n。数组T的第一个元素T[0]=A[1][n-1] T[1]=A[2][n-2],……,依次类推,那么放入A[i][j](i+j=n)的元素是 (37) 。
阅读下列说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。 说明:设某一机器由n个部件组成,每一个部件都可以从m个不同的供应商处购得。供应商j供应的部件i具有重量Wij和价格Cij。设计一个算法,求解总价格不超过上限cc的最小重量的机器组成。采用回溯法来求解该问题。首先定义解空间。解空间由长度为n的向量组成,其中每个分量取值来自集合{1,2,…,m},将解空间用树形结构表示。接着从根节点开始,以深度优先的方式搜索整个解空间。从根节点开始,根节点成为活节点,同时也成为当前的扩展节点。向纵深方向考虑第一个部件从第一个供应商处购买,得到一个新节点。判断当前的机器价格(C11)是否超过上限(cc),重量(W11)是否比当前已知的解(最小重量)大,若是,应回溯至最近的一个活节点;若否,则该新节点成为活节点,同时也成为当前的扩展节点,根节点不再是扩展节点。继续向纵深方向考虑第二个部件从第一个供应商处购买,得到一个新节点。同样判断当前的机器价格(C11+C21)是否超过上限(cc),重量(W11+W21)是否比当前已知的解(最小重量)大。若是,应回溯至最近的一个活节点;若否,则该新节点成为活节点,同时也成为当前的扩展节点,原来的节点不再是扩展节点。以这种方式递归地在解空间中搜索,直到找到所要求的解或者解空间中已无活节点为止。 C代码:下面是该算法的C语言实现。 (1)变量说明n:机器的部件数。m:供应商数。cc:价格上限。w[][]:二维数组,w[i][j]表示第j个供应商供应的第i个部件的重量。c[][]:二维数组,c[i][j]表示第j个供应商供应的第i个部件的价格。bestW:满足价格上限约束条件的最小机器重量。bestC://最小重量机器的价格。bestX[]:最优解,一维数组,bestX[i]表示第i个部件来自哪个供应商。cw:搜索过程中机器的重量。cp:搜索过程中机器的价格。x[]:搜索过程中产生的解,x[i]表示第i个部件来自哪个供应商。i:当前考虑的部件,从0到n-1。j:循环变量 (2)函数backtrack 代码如下:
考虑用分支限界解0-1背包问题 给定n种物品和一背包。物品i的重量是wi,其价值为vi,背包的容量为C。问应如何选择装入背包的物品,使得装入背包中物品的总价值最大? 示例:n=3,C=30,w={16,15,15},v={45,25,25} 求: 1、问题的解空间树 2、约束条件 2、如何剪枝?
相关题目

仓库中丁、戊类物品采用可燃包装,且包装重量大于物品本身重量1/4或可燃包装体积大于物品本身体积的1/2时,按(  )确定仓库的火灾危险性。

阅读下列说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。说明:设某一机器由n个部件组成,每一个部件都可以从m个不同的供应商处购得。供应商j供应的部件i具有重量Wij和价格Cij。设计一个算法,求解总价格不超过上限cc的最小重量的机器组成。采用回溯法来求解该问题。首先定义解空间。解空间由长度为n的向量组成,其中每个分量取值来自集合{1,2,…,m},将解空间用树形结构表示。接着从根节点开始,以深度优先的方式搜索整个解空间。从根节点开始,根节点成为活节点,同时也成为当前的扩展节点。向纵深方向考虑第一个部件从第一个供应商处购买,得到一个新节点。判断当前的机器价格(C11)是否超过上限(cc),重量(W11)是否比当前已知的解(最小重量)大,若是,应回溯至最近的一个活节点;若否,则该新节点成为活节点,同时也成为当前的扩展节点,根节点不再是扩展节点。继续向纵深方向考虑第二个部件从第一个供应商处购买,得到一个新节点。同样判断当前的机器价格(C11+C21)是否超过上限(cc),重量(W11+W21)是否比当前已知的解(最小重量)大。若是,应回溯至最近的一个活节点;若否,则该新节点成为活节点,同时也成为当前的扩展节点,原来的节点不再是扩展节点。以这种方式递归地在解空间中搜索,直到找到所要求的解或者解空间中已无活节点为止。C代码:下面是该算法的C语言实现。(1)变量说明n:机器的部件数。m:供应商数。cc:价格上限。w[][]:二维数组,w[i][j]表示第j个供应商供应的第i个部件的重量。c[][]:二维数组,c[i][j]表示第j个供应商供应的第i个部件的价格。bestW:满足价格上限约束条件的最小机器重量。bestC:最小重量机器的价格。bestX[]:最优解,一维数组,bestX[i]表示第i个部件来自哪个供应商。cw:搜索过程中机器的重量。cp:搜索过程中机器的价格。x[]:搜索过程中产生的解,x[i]表示第i个部件来自哪个供应商。i:当前考虑的部件,从0到n-1。j:循环变量(2)函数backtrack
下列算法中不能解决0/1背包问题的是()
分支限界法解旅行售货员问题时,活结点表的组织形式是()
分支限界法解最大团问题时,活结点表的组织形式是()
回溯算法和分支限界法的问题的解空间树不会是()
解决0/1背包问可以使用动态规划、回溯法和分支限界法,其中不需要排序的是--------,需要排序的是------,------
分支限界法主要有-----分支限界法和------分支限界法
使用回溯法进行状态空间树裁剪分支时一般有两个标准:约束条件和目标函数的界,N皇后问和0/1背包问正好是两种不同的类型,其中同时使用约束条件和目标函数的界进行裁剪的是--------,只使用约束条件进行裁剪的是-----------
0-1背包问的回溯算法所需的计算时间为_____________,用动态规划算法所需的计算时间为______
张某系L市出租汽车公司司机,住该市河东区。1999年10月25日晚,香港居民孙某在河西区乘坐张某驾驶的出租车至该区天平大酒店,下车时将背包遗忘在车上,内有价值近4万元的笔记本电脑。孙下车后即意识到背包遗忘在车上,于是找到张某,向其索要。张某谎称并未见到背包,拒不交出。该案一审管辖法院应当是哪个法院
布坎南对解决公共物品供给问题提出了一种市场失灵的自发解,即()
以下程序的输出结果是 ______。 Dim n(2,2), i, j As Integer For i = 0 To 2 For j = 0 To 2 n(i,j) = i + j Next j Next i For i = 0 To 1 For j = 0 To 1 n(i+ 1 ,j + 1) = n(i + 1,j + 1) + n(i, j) Next j Next i Print n(i, j)
以下程序的输出结果是 ( ) main( ) { int n[3] [3],i,j; for (i=0;i<3;i+ +) for(j=0;i<3;++) n[i][j]=i+j; for(i=0;i<2;i++) for(j=0,j<2;j++) n[i+1][j+1]+=[i][j]; printf("%d ",n[1][j]); }
在分支—限界算法设计策略中,通常采用(4)搜索问题的解空间。
在分支一限界算法设计策略中,通常采用(54)搜索问题的解空间。
分支一限界算法设计策略中,通常采用(62)搜索问题的解空间。
在分支—限界算法设计策略中,通常采用(57)搜索问题的解空间。
球童为球员背包,为球员递杆都是他们的份内工作
使用回溯法进行状态空间树裁剪分支时一般有两个标准:约束条件和目标函数的界,N皇后问题和0/1背包问题正好是两种不同的类型,其中同时使用约束条件和目标函数的界进行裁剪的是(),只使用约束条件进行裁剪的是()。
广告位招租WX:84302438

免费的网站请分享给朋友吧