2023年8月1日发(作者:)
JS算法之背包问题背包问题是⼀个组合优化的问题,描述如下:给⼀个固定⼤⼩,能够携重W的背包以及⼀组有价值重量的物品,找出⼀个最佳的⽅案,使得装⼊包中的物品重量不超过W且总价值最⼤。1、问题分析数据:物品个数n=5,物品重量weights=[2,2,6,5,4],物品价值values=[6,3,5,4,6],背包总容量W=10。我们设置⼀个矩阵f来记录结果:f(i.j)可表⽰可选的物品为{i.....n},背包容量为j(0 显然此处填6,当j=3时,情况相同,当j=4时,能同时放下,f(1,4)=9,当j>4时,背包只能放⼊物品0和1,所以最⼤价值为9;再看第三⾏,当j=0、1,什么都放不下,当j=2时,虽然放不下物品2,但是表中可看出,背包的最⼤容量为6,当j=8时,背包可以放物品0、1,也可以物品0、2,和1、2,物品0、1的价值,可以看到为9,最优值为0/2,总价值为11,当j=10时,三个物品能装下,总价值为14;整理⽅程可得到第1⾏和第2⾏的使⽤⽅程:根据⽅程,计算各列得出结果,根还有0-1背包问题的最优⽅案,得到⽅程式:代码如下:function knapsack(weights, values, w){ var n = -1;//获取物品个数 var f=[[]];//定义f的矩阵 for(var j=0;j<=w;j++){ if(j 2023年8月1日发(作者:) JS算法之背包问题背包问题是⼀个组合优化的问题,描述如下:给⼀个固定⼤⼩,能够携重W的背包以及⼀组有价值重量的物品,找出⼀个最佳的⽅案,使得装⼊包中的物品重量不超过W且总价值最⼤。1、问题分析数据:物品个数n=5,物品重量weights=[2,2,6,5,4],物品价值values=[6,3,5,4,6],背包总容量W=10。我们设置⼀个矩阵f来记录结果:f(i.j)可表⽰可选的物品为{i.....n},背包容量为j(0 显然此处填6,当j=3时,情况相同,当j=4时,能同时放下,f(1,4)=9,当j>4时,背包只能放⼊物品0和1,所以最⼤价值为9;再看第三⾏,当j=0、1,什么都放不下,当j=2时,虽然放不下物品2,但是表中可看出,背包的最⼤容量为6,当j=8时,背包可以放物品0、1,也可以物品0、2,和1、2,物品0、1的价值,可以看到为9,最优值为0/2,总价值为11,当j=10时,三个物品能装下,总价值为14;整理⽅程可得到第1⾏和第2⾏的使⽤⽅程:根据⽅程,计算各列得出结果,根还有0-1背包问题的最优⽅案,得到⽅程式:代码如下:function knapsack(weights, values, w){ var n = -1;//获取物品个数 var f=[[]];//定义f的矩阵 for(var j=0;j<=w;j++){ if(j
发布评论